Java Code Examples for javax.swing.PopupFactory#setSharedInstance()

The following examples show how to use javax.swing.PopupFactory#setSharedInstance() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CustomPopupFactory.java    From WorldGrower with GNU General Public License v3.0 6 votes vote down vote up
public static void setPopupFactory() {
	PopupFactory.setSharedInstance(new PopupFactory() {

		@Override
		public Popup getPopup(Component owner, Component contents, int x, int y) throws IllegalArgumentException {
			if (contents instanceof JToolTip) {
				JToolTip toolTip = (JToolTip)contents;
				int width = (int) toolTip.getPreferredSize().getWidth();
				
				GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
				int screenWidth = gd.getDisplayMode().getWidth();
				
				// if there is enough room, move tooltip to the right to have enough room
				// for large tooltips.
				// this way they don't hinder mouse movement and make it possible to easily
				// view multiple tooltips of items.
				if (x + width + TOOLTIP_X_OFFSET < screenWidth) {
					x += TOOLTIP_X_OFFSET;
				}
			}
			return super.getPopup(owner, contents, x, y);
		}
	});
}
 
Example 2
Source File: FlatLaf.java    From FlatLaf with Apache License 2.0 5 votes vote down vote up
@Override
public void uninitialize() {
	// remove desktop property listener
	if( desktopPropertyListener != null ) {
		Toolkit toolkit = Toolkit.getDefaultToolkit();
		toolkit.removePropertyChangeListener( desktopPropertyName, desktopPropertyListener );
		if( desktopPropertyName2 != null )
			toolkit.removePropertyChangeListener( desktopPropertyName2, desktopPropertyListener );
		toolkit.removePropertyChangeListener( DESKTOPFONTHINTS, desktopPropertyListener );
		desktopPropertyName = null;
		desktopPropertyName2 = null;
		desktopPropertyListener = null;
	}

	// uninstall popup factory
	if( oldPopupFactory != null ) {
		PopupFactory.setSharedInstance( oldPopupFactory );
		oldPopupFactory = null;
	}

	// uninstall mnemonic handler
	if( mnemonicHandler != null ) {
		mnemonicHandler.uninstall();
		mnemonicHandler = null;
	}

	// restore default link color
	new HTMLEditorKit().getStyleSheet().addRule( "a { color: blue; }" );
	postInitialization = null;

	// restore enable/disable window decorations
	if( oldFrameWindowDecorated != null ) {
		JFrame.setDefaultLookAndFeelDecorated( oldFrameWindowDecorated );
		JDialog.setDefaultLookAndFeelDecorated( oldDialogWindowDecorated );
		oldFrameWindowDecorated = null;
		oldDialogWindowDecorated = null;
	}

	super.uninitialize();
}
 
Example 3
Source File: LuckPopupMenuUIBundle.java    From littleluck with Apache License 2.0 5 votes vote down vote up
@Override
protected void installOther(UIDefaults table)
{
    // 使用自定义工厂, 设置Popup为透明, 否则无法使用阴影边框
    // Use a custom factory, set the Popup to be transparent.
    // otherwise you can not use the shadow border.
    PopupFactory.setSharedInstance(new LuckPopupFactory());
}
 
Example 4
Source File: RoundedPopupFactory.java    From rapidminer-studio with GNU Affero General Public License v3.0 5 votes vote down vote up
public static void install() {
	PopupFactory factory = PopupFactory.getSharedInstance();
	if (factory instanceof RoundedPopupFactory) {
		return;
	}
	PopupFactory.setSharedInstance(new RoundedPopupFactory(factory));
}
 
Example 5
Source File: RoundedPopupFactory.java    From rapidminer-studio with GNU Affero General Public License v3.0 5 votes vote down vote up
public static void uninstall() {
	PopupFactory factory = PopupFactory.getSharedInstance();
	if (!(factory instanceof RoundedPopupFactory)) {
		return;
	}
	PopupFactory stored = ((RoundedPopupFactory) factory).storedFactory;
	PopupFactory.setSharedInstance(stored);
}
 
Example 6
Source File: RapidMinerGUI.java    From rapidminer-studio with GNU Affero General Public License v3.0 5 votes vote down vote up
/**
 * This default implementation only setup the tool tip durations. Subclasses might override this
 * method.
 */
protected void setupGUI() throws Exception {
	System.setProperty(BookmarkIO.PROPERTY_BOOKMARKS_DIR, FileSystemService.getUserRapidMinerDir().getAbsolutePath());
	System.setProperty(BookmarkIO.PROPERTY_BOOKMARKS_FILE, ".bookmarks");

	try {
		if (SystemInfoUtilities.getOperatingSystem() == OperatingSystem.OSX) {
			// to support OS Xs menu bar shown in the OS X menu bar,
			// we have to load the default system look and feel
			// to exchange the MenuBarUI from RapidLookAndFeel with the
			// default OS X look and feel UI class.
			// See here for more information:
			// http://www.pushing-pixels.org/2008/07/13/swing-applications-and-mac-os-x-menu-bar.html
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
			Map<String, Object> macUIDefaults = new HashMap<>();
			macUIDefaults.put("MenuBarUI", UIManager.get("MenuBarUI"));
			UIManager.setLookAndFeel(new RapidLookAndFeel(macUIDefaults));

			// tooltips are painted behind heavyweight windows (e.g. the native Chromium browser window) on OS X
			// despite the call above of ToolTipManager#setLightWeightPopupEnabled(false);
			// so we force a heavyweight popup factory for OS X
			PopupFactory.setSharedInstance(new HeavyweightOSXPopupFactory());
		} else {
			UIManager.setLookAndFeel(new RapidLookAndFeel());
		}
	} catch (Exception e) {
		LogService.getRoot().log(Level.WARNING, I18N.getMessage(LogService.getRoot().getResourceBundle(),
				"com.rapidminer.gui.RapidMinerGUI.setting_up_modern_look_and_feel_error"), e);
	}

	// needed because of native browser window which otherwise renders above all popup menus
	JPopupMenu.setDefaultLightWeightPopupEnabled(false);
}
 
Example 7
Source File: ShadowPopupFactory.java    From javamelody with Apache License 2.0 5 votes vote down vote up
/**
 * Installs the ShadowPopupFactory as the shared popup factory
 * on non-Mac platforms. Also stores the previously set factory,
 * so that it can be restored in <code>#uninstall</code>.<p>
 *
 * In some Mac Java environments the popup factory throws
 * a NullPointerException when we call <code>#getPopup</code>.<p>
 *
 * The Mac case shows that we may have problems replacing
 * non PopupFactory instances. Therefore we should consider
 * replacing only instances of PopupFactory.
 *
 * @see #uninstall()
 */
public static void install() {
	final String os = System.getProperty("os.name");
	final boolean macintosh = os != null && os.indexOf("Mac") != -1;
	if (macintosh) {
		return;
	}

	final PopupFactory factory = PopupFactory.getSharedInstance();
	if (factory instanceof ShadowPopupFactory) {
		return;
	}

	PopupFactory.setSharedInstance(new ShadowPopupFactory(factory));
}
 
Example 8
Source File: ShadowPopupFactory.java    From javamelody with Apache License 2.0 5 votes vote down vote up
/**
 * Uninstalls the ShadowPopupFactory and restores the original
 * popup factory as the new shared popup factory.
 *
 * @see #install()
 */
public static void uninstall() {
	final PopupFactory factory = PopupFactory.getSharedInstance();
	if (!(factory instanceof ShadowPopupFactory)) {
		return;
	}

	final PopupFactory stored = ((ShadowPopupFactory) factory).storedFactory;
	PopupFactory.setSharedInstance(stored);
}
 
Example 9
Source File: Application.java    From bigtable-sql with Apache License 2.0 5 votes vote down vote up
/**
 * Setup applications Look and Feel.
 */
private void setupLookAndFeel(ApplicationArguments args)
{
	/* 
	 * Don't prevent the user from overriding the laf is they choose to use 
	 * Swing's default laf prop 
	 */
	String userSpecifiedOverride = System.getProperty("swing.defaultlaf");
	if (userSpecifiedOverride != null && !"".equals(userSpecifiedOverride)) { return; }

	String lafClassName =
		args.useNativeLAF() ? UIManager.getSystemLookAndFeelClassName() : MetalLookAndFeel.class.getName();

	if (!args.useDefaultMetalTheme())
	{
		MetalLookAndFeel.setCurrentTheme(new AllBluesBoldMetalTheme());
	}

	try
	{
		// The following is a work-around for the problem on Mac OS X where
		// the Apple LAF delegates to the Swing Popup factory but then
		// tries to set a 90% alpha on the underlying Cocoa window, which
		// will always be null if you're using JGoodies L&F
		// see http://www.caimito.net/pebble/2005/07/26/1122392314480.html#comment1127522262179
		// This has no effect on Linux/Windows
		PopupFactory.setSharedInstance(new PopupFactory());

		UIManager.setLookAndFeel(lafClassName);
	}
	catch (Exception ex)
	{
		// i18n[Application.error.setlaf=Error setting LAF]
		s_log.error(s_stringMgr.getString("Application.error.setlaf"), ex);
	}
}
 
Example 10
Source File: FlatLaf.java    From FlatLaf with Apache License 2.0 4 votes vote down vote up
@Override
public void initialize() {
	if( SystemInfo.IS_MAC )
		initializeAqua();

	super.initialize();

	// install popup factory
	oldPopupFactory = PopupFactory.getSharedInstance();
	PopupFactory.setSharedInstance( new FlatPopupFactory() );

	// install mnemonic handler
	mnemonicHandler = new MnemonicHandler();
	mnemonicHandler.install();

	// listen to desktop property changes to update UI if system font or scaling changes
	if( SystemInfo.IS_WINDOWS ) {
		// Windows 10 allows increasing font size independent of scaling:
		//   Settings > Ease of Access > Display > Make text bigger (100% - 225%)
		desktopPropertyName = "win.messagebox.font";
	} else if( SystemInfo.IS_LINUX ) {
		// Linux/Gnome allows changing font in "Tweaks" app
		desktopPropertyName = "gnome.Gtk/FontName";

		// Linux/Gnome allows extra scaling and larger text:
		//   Settings > Devices > Displays > Scale (100% or 200%)
		//   Settings > Universal access > Large Text (off or on, 125%)
		//   "Tweaks" app > Fonts > Scaling Factor (0,5 - 3)
		desktopPropertyName2 = "gnome.Xft/DPI";
	}
	if( desktopPropertyName != null ) {
		desktopPropertyListener = e -> {
			String propertyName = e.getPropertyName();
			if( desktopPropertyName.equals( propertyName ) || propertyName.equals( desktopPropertyName2 ) )
				reSetLookAndFeel();
			else if( DESKTOPFONTHINTS.equals( propertyName ) ) {
				if( UIManager.getLookAndFeel() instanceof FlatLaf ) {
					putAATextInfo( UIManager.getLookAndFeelDefaults() );
					updateUILater();
				}
			}
		};
		Toolkit toolkit = Toolkit.getDefaultToolkit();
		toolkit.addPropertyChangeListener( desktopPropertyName, desktopPropertyListener );
		if( desktopPropertyName2 != null )
			toolkit.addPropertyChangeListener( desktopPropertyName2, desktopPropertyListener );
		toolkit.addPropertyChangeListener( DESKTOPFONTHINTS, desktopPropertyListener );
	}

	// Following code should be ideally in initialize(), but needs color from UI defaults.
	// Do not move this code to getDefaults() to avoid side effects in the case that
	// getDefaults() is directly invoked from 3rd party code. E.g. `new FlatLightLaf().getDefaults()`.
	postInitialization = defaults -> {
		// update link color in HTML text
		Color linkColor = defaults.getColor( "Component.linkColor" );
		if( linkColor != null ) {
			new HTMLEditorKit().getStyleSheet().addRule(
				String.format( "a { color: #%06x; }", linkColor.getRGB() & 0xffffff ) );
		}
	};

	// enable/disable window decorations, but only if system property is either
	// "true" or "false"; in other cases it is not changed
	Boolean useWindowDecorations = FlatSystemProperties.getBooleanStrict( FlatSystemProperties.USE_WINDOW_DECORATIONS, null );
	if( useWindowDecorations != null ) {
		oldFrameWindowDecorated = JFrame.isDefaultLookAndFeelDecorated();
		oldDialogWindowDecorated = JDialog.isDefaultLookAndFeelDecorated();
		JFrame.setDefaultLookAndFeelDecorated( useWindowDecorations );
		JDialog.setDefaultLookAndFeelDecorated( useWindowDecorations );
	}
}
 
Example 11
Source File: Main.java    From Cognizant-Intelligent-Test-Scripter with Apache License 2.0 4 votes vote down vote up
private static void tweakNimbusUI() {
    UIDefaults defaults = UIManager.getLookAndFeelDefaults();
    defaults.put("nimbusOrange", defaults.get("nimbusBase"));
    defaults.put("Table.gridColor", new Color(214, 217, 223));
    defaults.put("Table.disabled", false);
    defaults.put("Table.showGrid", true);
    defaults.put("Table.intercellSpacing", new Dimension(1, 1));
    defaults.put("CheckBoxMenuItem.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("RadioButtonMenuItem.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("MenuItem.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("Menu.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("Table.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("Label.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("TextField.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("TextArea.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("CheckBox.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("ComboBox.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("ToolTip.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("Button.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("TableHeader.font", new java.awt.Font("sansserif", 0, 11));
    defaults.put("FileChooser.font", new java.awt.Font("sansserif", 0, 11));
    /**
     * custom tab-area border painter
     */
    Painter tabborder = (Painter) (Graphics2D g, Object object, int width, int height) -> {
        //add code to customize
    };
    defaults.put("TabbedPane:TabbedPaneTabArea[Disabled].backgroundPainter", tabborder);
    defaults.put("TabbedPane:TabbedPaneTabArea[Enabled+MouseOver].backgroundPainter", tabborder);
    defaults.put("TabbedPane:TabbedPaneTabArea[Enabled+Pressed].backgroundPainter", tabborder);
    defaults.put("TabbedPane:TabbedPaneTabArea[Enabled].backgroundPainter", tabborder);
    PopupFactory.setSharedInstance(new PopupFactory() {
        @Override
        public Popup getPopup(Component owner, final Component contents, int x, int y) throws IllegalArgumentException {
            Popup popup = super.getPopup(owner, contents, x, y);
            SwingUtilities.invokeLater(() -> {
                contents.repaint();
            });
            return popup;
        }
    });
}
 
Example 12
Source File: JToolTipDemo.java    From pumpernickel with MIT License 4 votes vote down vote up
protected void refreshUI() {
	if (qPopupFactory == null) {
		qPopupFactory = new QPopupFactory(PopupFactory.getSharedInstance());
	}
	if (toolTipTypeComboBox.getSelectedIndex() == 1) {
		PopupFactory.setSharedInstance(qPopupFactory.getParentDelegate());
	} else {
		qPopupFactory.setToolTipCallout(!NONE.equals(calloutTypeComboBox
				.getSelectedItem()));
		PopupFactory.setSharedInstance(qPopupFactory);
	}

	boolean tooltipsActive = toolTipTypeComboBox.getSelectedIndex() != 2;
	if (tooltipsActive) {
		Font font = fontComboBox.getSelectedFont();
		float size = fontSizeSlider.getValue();
		font = font.deriveFont(size);
		UIManager.getDefaults().put("ToolTip.font", font);

		Color background = color.getColorSelectionModel()
				.getSelectedColor();
		Color foreground;
		float[] hsl = HSLColor.fromRGB(background, null);
		if (hsl[2] < .5) {
			foreground = Color.white;
		} else {
			foreground = Color.black;
		}

		UIManager.getDefaults().put("ToolTip.background", background);
		UIManager.getDefaults().put("ToolTip.foreground", foreground);
	}

	ToolTipManager.sharedInstance().setEnabled(
			toolTipTypeComboBox.getSelectedIndex() != 2);

	colorLabel.setVisible(tooltipsActive);
	color.setVisible(tooltipsActive);
	fontSizeLabel.setVisible(tooltipsActive);
	fontSizeSlider.setVisible(tooltipsActive);
	fontLabel.setVisible(tooltipsActive);
	fontComboBox.setVisible(tooltipsActive);

	calloutTypeLabel
			.setVisible(toolTipTypeComboBox.getSelectedIndex() == 0);
	calloutTypeComboBox
			.setVisible(toolTipTypeComboBox.getSelectedIndex() == 0);

	CalloutType type = null;
	try {
		type = CalloutType.valueOf((String) calloutTypeComboBox
				.getSelectedItem());
	} catch (Exception e) {
	}
	sampleButton.putClientProperty(QPopup.PROPERTY_CALLOUT_TYPE, type);
}
 
Example 13
Source File: LuckPopupMenuUIBundle.java    From littleluck with Apache License 2.0 4 votes vote down vote up
public void uninitialize()
{
    PopupFactory.setSharedInstance(new PopupFactory());
}
 
Example 14
Source File: __UI__.java    From beautyeye with Apache License 2.0 4 votes vote down vote up
/**
 * Ui impl.
 */
public static void uiImpl()
{
	PopupFactory.setSharedInstance(popupFactoryDIY);
}