@Override public Insets getBorderInsets(Component c) { if (DarculaButtonUI.isSquare(c)) { return JBUI.insets(2, 0, 2, 0).asUIResource(); } return JBUI.insets(8, 16, 8, 14).asUIResource(); }
public MavenProjectImportStep(WizardContext wizardContext) { super(wizardContext); myImportingSettingsForm = new MavenImportingSettingsForm(true, wizardContext.isCreatingNewProject()) { public String getDefaultModuleDir() { return myRootPathComponent.getPath(); } }; myRootPathComponent = new NamePathComponent( "", ProjectBundle.message("maven.import.label.select.root"), ProjectBundle.message("maven.import.title.select.root"), "", false, false); JButton envSettingsButton = new JButton(ProjectBundle.message("maven.import.environment.settings")); envSettingsButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { ShowSettingsUtil.getInstance() .editConfigurable(myPanel, new MavenEnvironmentConfigurable()); } }); myPanel = new JPanel(new GridBagLayout()); myPanel.setBorder(BorderFactory.createEtchedBorder()); GridBagConstraints c = new GridBagConstraints(); c.gridx = 0; c.gridy = 0; c.weightx = 1; c.fill = GridBagConstraints.HORIZONTAL; c.insets = JBUI.insets(4, 4, 0, 4); myPanel.add(myRootPathComponent, c); c.gridy = 1; c.insets = JBUI.insets(4, 4, 0, 4); myPanel.add(myImportingSettingsForm.createComponent(), c); c.gridy = 2; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.NORTHEAST; c.weighty = 1; c.insets = JBUI.insets(4 + envSettingsButton.getPreferredSize().height, 4, 4, 4); myPanel.add(envSettingsButton, c); myRootPathComponent.setNameComponentVisible(false); }
private static void patchHiDPI(UIDefaults defaults) { if (!JBUI.isHiDPI()) return; List<String> myIntKeys = Arrays.asList("Tree.leftChildIndent", "Tree.rightChildIndent"); List<String> patched = new ArrayList<String>(); for (Map.Entry<Object, Object> entry : defaults.entrySet()) { Object value = entry.getValue(); String key = entry.getKey().toString(); if (value instanceof DimensionUIResource) { entry.setValue(JBUI.size((DimensionUIResource) value).asUIResource()); } else if (value instanceof InsetsUIResource) { entry.setValue(JBUI.insets(((InsetsUIResource) value)).asUIResource()); } else if (value instanceof Integer) { if (key.endsWith(".maxGutterIconWidth") || myIntKeys.contains(key)) { if (!"true".equals(defaults.get(key + ".hidpi.patched"))) { entry.setValue(Integer.valueOf(JBUI.scale((Integer) value))); patched.add(key); } } } } for (String key : patched) { defaults.put(key + ".hidpi.patched", "true"); } }
protected JComponent createNorthPanel() { myNameField = new NameSuggestionsField(myProject); myNameChangedListener = new NameSuggestionsField.DataChanged() { public void dataChanged() { updateOkStatus(); } }; myNameField.addDataChangedListener(myNameChangedListener); JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gbConstraints = new GridBagConstraints(); gbConstraints.insets = JBUI.insets(4); gbConstraints.anchor = GridBagConstraints.WEST; gbConstraints.fill = GridBagConstraints.BOTH; gbConstraints.gridwidth = 1; gbConstraints.weightx = 0; gbConstraints.weighty = 0; gbConstraints.gridx = 0; gbConstraints.gridy = 0; JLabel type = new JLabel(RefactoringBundle.message("variable.of.type")); panel.add(type, gbConstraints); gbConstraints.gridx++; myTypeSelector = myTypeSelectorManager.getTypeSelector(); panel.add(myTypeSelector.getComponent(), gbConstraints); gbConstraints.gridwidth = 1; gbConstraints.weightx = 0; gbConstraints.weighty = 0; gbConstraints.gridx = 0; gbConstraints.gridy = 1; JLabel namePrompt = new JLabel(RefactoringBundle.message("name.prompt")); namePrompt.setLabelFor(myNameField.getComponent()); panel.add(namePrompt, gbConstraints); gbConstraints.gridwidth = 1; gbConstraints.weightx = 1; gbConstraints.gridx = 1; gbConstraints.gridy = 1; panel.add(myNameField.getComponent(), gbConstraints); myNameSuggestionsManager = new NameSuggestionsManager( myTypeSelector, myNameField, new NameSuggestionsGenerator() { public SuggestedNameInfo getSuggestedNameInfo(PsiType type) { return IntroduceVariableBase.getSuggestedName(type, myExpression); } }); myNameSuggestionsManager.setLabelsFor(type, namePrompt); return panel; }
@Nullable protected JComponent createCenterPanel() { JPanel panel = new JPanel(); panel.setLayout(new GridBagLayout()); GridBagConstraints gb = new GridBagConstraints(); // top label. gb.insets = JBUI.insets(2); gb.weightx = 1; gb.weighty = 0; gb.gridwidth = 2; gb.gridheight = 1; gb.gridx = 0; gb.gridy = 0; gb.anchor = GridBagConstraints.WEST; gb.fill = GridBagConstraints.HORIZONTAL; File adminPath = new File(myPath, SVNFileUtil.getAdminDirectoryName()); final boolean adminPathIsDirectory = adminPath.isDirectory(); final String label = getMiddlePartOfResourceKey(adminPathIsDirectory); JLabel topLabel = new JLabel(getTopMessage(label)); topLabel.setUI(new MultiLineLabelUI()); panel.add(topLabel, gb); gb.gridy += 1; registerFormat(WorkingCopyFormat.ONE_DOT_SIX, label, panel, gb); registerFormat(WorkingCopyFormat.ONE_DOT_SEVEN, label, panel, gb); registerFormat(WorkingCopyFormat.ONE_DOT_EIGHT, label, panel, gb); final JPanel auxiliaryPanel = getBottomAuxiliaryPanel(); if (auxiliaryPanel != null) { panel.add(auxiliaryPanel, gb); gb.gridy += 1; } myLoadingPanel = new JBLoadingPanel(new BorderLayout(), getDisposable()); myLoadingPanel.add(panel, BorderLayout.CENTER); return myLoadingPanel; }
public FlatWelcomeFrame() { final JRootPane rootPane = getRootPane(); myScreen = new FlatWelcomeScreen(); final IdeGlassPaneImpl glassPane = new IdeGlassPaneImpl(rootPane) { @Override public void addNotify() { super.addNotify(); rootPane.remove(getProxyComponent()); //noinspection SSBasedInspection SwingUtilities.invokeLater( new Runnable() { public void run() { JBProtocolCommand.handleCurrentCommand(); } }); } }; setGlassPane(glassPane); glassPane.setVisible(false); // setUndecorated(true); setContentPane(myScreen.getWelcomePanel()); setTitle("Welcome to " + ApplicationNamesInfo.getInstance().getFullProductName()); AppUIUtil.updateWindowIcon(this); final int width = RecentProjectsManager.getInstance().getRecentProjectsActions(false).length == 0 ? 666 : 777; setSize(JBUI.size(width, 460)); setResizable(false); // int x = bounds.x + (bounds.width - getWidth()) / 2; // int y = bounds.y + (bounds.height - getHeight()) / 2; Point location = DimensionService.getInstance().getLocation(WelcomeFrame.DIMENSION_KEY, null); Rectangle screenBounds = ScreenUtil.getScreenRectangle(location != null ? location : new Point(0, 0)); setLocation( new Point( screenBounds.x + (screenBounds.width - getWidth()) / 2, screenBounds.y + (screenBounds.height - getHeight()) / 3)); // setLocation(x, y); ProjectManager.getInstance() .addProjectManagerListener( new ProjectManagerAdapter() { @Override public void projectOpened(Project project) { dispose(); } }); myBalloonLayout = new BalloonLayoutImpl(rootPane, JBUI.insets(8)); WelcomeFrame.setupCloseAction(this); MnemonicHelper.init(this); Disposer.register( ApplicationManager.getApplication(), new Disposable() { @Override public void dispose() { FlatWelcomeFrame.this.dispose(); } }); }
InplaceIntroduceParameterPopup( final Project project, final Editor editor, final TypeSelectorManagerImpl typeSelectorManager, final PsiExpression expr, final PsiLocalVariable localVar, final PsiMethod method, final PsiMethod methodToSearchFor, final PsiExpression[] occurrences, final TIntArrayList parametersToRemove, final boolean mustBeFinal) { super( project, editor, expr, localVar, occurrences, typeSelectorManager, IntroduceParameterHandler.REFACTORING_NAME); myMethod = method; myMethodToSearchFor = methodToSearchFor; myMustBeFinal = mustBeFinal; myWholePanel.add( getPreviewComponent(), new GridBagConstraints( 0, GridBagConstraints.RELATIVE, 2, 1, 1, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, JBUI.insets(0, 5), 0, 0)); myPanel = new InplaceIntroduceParameterUI( project, localVar, expr, method, parametersToRemove, typeSelectorManager, myOccurrences) { @Override protected PsiParameter getParameter() { return InplaceIntroduceParameterPopup.this.getParameter(); } @Override protected void updateControls(JCheckBox[] removeParamsCb) { super.updateControls(removeParamsCb); if (myParameterIndex < 0) return; restartInplaceIntroduceTemplate(); } protected TIntArrayList getParametersToRemove() { TIntArrayList parameters = new TIntArrayList(); if (myCbReplaceAllOccurences == null || myCbReplaceAllOccurences.isSelected()) { for (int i = 0; i < myParametersToRemove.length; i++) { if (myParametersToRemove[i] != null) { parameters.add(i); } } } return parameters; } }; myPanel.appendOccurrencesDelegate(myWholePanel); }
public MyBorder() { myInsets = JBUI.insets(1); }
public class JBOptionButton extends JButton implements MouseMotionListener, Weighted { private final Insets myDownIconInsets = JBUI.insets(0, 6, 0, 4); private Rectangle myMoreRec; private Rectangle myMoreRecMouse; private Action[] myOptions; private JPopupMenu myUnderPopup; private JPopupMenu myAbovePopup; private boolean myPopupIsShowing; private String myOptionTooltipText; private Set<OptionInfo> myOptionInfos = new HashSet<OptionInfo>(); private boolean myOkToProcessDefaultMnemonics = true; private IdeGlassPane myGlassPane; private final Disposable myDisposable = Disposer.newDisposable(); public JBOptionButton(Action action, Action[] options) { super(action); myOptions = options; myMoreRec = new Rectangle( 0, 0, AllIcons.General.ArrowDown.getIconWidth(), AllIcons.General.ArrowDown.getIconHeight()); myUnderPopup = fillMenu(true); myAbovePopup = fillMenu(false); enableEvents(AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK); } @Override public void addNotify() { super.addNotify(); if (!ScreenUtil.isStandardAddRemoveNotify(this)) return; myGlassPane = IdeGlassPaneUtil.find(this); if (myGlassPane != null) { myGlassPane.addMouseMotionPreprocessor(this, myDisposable); } } @Override public void removeNotify() { super.removeNotify(); if (!ScreenUtil.isStandardAddRemoveNotify(this)) return; Disposer.dispose(myDisposable); } @Override public double getWeight() { return 0.5; } @Override public void mouseDragged(MouseEvent e) {} @Override public void mouseMoved(MouseEvent e) { final MouseEvent event = SwingUtilities.convertMouseEvent(e.getComponent(), e, getParent()); final boolean insideRec = getBounds().contains(event.getPoint()); boolean buttonsNotPressed = (e.getModifiersEx() & (InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON2_DOWN_MASK | InputEvent.BUTTON3_DOWN_MASK)) == 0; if (!myPopupIsShowing && insideRec && buttonsNotPressed) { showPopup(null, false); } else if (myPopupIsShowing && !insideRec) { final Component over = SwingUtilities.getDeepestComponentAt(e.getComponent(), e.getX(), e.getY()); JPopupMenu popup = myUnderPopup.isShowing() ? myUnderPopup : myAbovePopup; if (over != null && popup.isShowing()) { final Rectangle rec = new Rectangle(popup.getLocationOnScreen(), popup.getSize()); int delta = 15; rec.x -= delta; rec.width += delta * 2; rec.y -= delta; rec.height += delta * 2; final Point eventPoint = e.getPoint(); SwingUtilities.convertPointToScreen(eventPoint, e.getComponent()); if (rec.contains(eventPoint)) { return; } } closePopup(); } } @Override public Dimension getPreferredSize() { final Dimension size = super.getPreferredSize(); size.width += (myMoreRec.width + myDownIconInsets.left + myDownIconInsets.right); size.height += (myDownIconInsets.top + myDownIconInsets.bottom); return size; } @Override public void doLayout() { super.doLayout(); Insets insets = getInsets(); myMoreRec.x = getSize().width - myMoreRec.width - insets.right + 8; myMoreRec.y = (getHeight() / 2 - myMoreRec.height / 2); myMoreRecMouse = new Rectangle(myMoreRec.x - 8, 0, getWidth() - myMoreRec.x, getHeight()); } @Override public String getToolTipText(MouseEvent event) { if (myMoreRec.x < event.getX()) { return myOptionTooltipText; } else { return super.getToolTipText(event); } } @Override protected void processMouseEvent(MouseEvent e) { if (myMoreRecMouse.contains(e.getPoint())) { if (e.getID() == MouseEvent.MOUSE_PRESSED) { if (!myPopupIsShowing) { togglePopup(); } } } else { super.processMouseEvent(e); } } public void togglePopup() { if (myPopupIsShowing) { closePopup(); } else { showPopup(null, false); } } public void showPopup(final Action actionToSelect, final boolean ensureSelection) { if (myPopupIsShowing) return; myPopupIsShowing = true; final Point loc = getLocationOnScreen(); final Rectangle screen = ScreenUtil.getScreenRectangle(loc); final Dimension popupSize = myUnderPopup.getPreferredSize(); final Rectangle intersection = screen.intersection(new Rectangle(new Point(loc.x, loc.y + getHeight()), popupSize)); final boolean above = intersection.height < popupSize.height; int y = above ? getY() - popupSize.height : getY() + getHeight(); final JPopupMenu popup = above ? myAbovePopup : myUnderPopup; final Ref<PopupMenuListener> listener = new Ref<PopupMenuListener>(); listener.set( new PopupMenuListener() { @Override public void popupMenuWillBecomeVisible(PopupMenuEvent e) {} @Override public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { if (popup != null && listener.get() != null) { popup.removePopupMenuListener(listener.get()); } SwingUtilities.invokeLater( new Runnable() { @Override public void run() { myPopupIsShowing = false; } }); } @Override public void popupMenuCanceled(PopupMenuEvent e) {} }); popup.addPopupMenuListener(listener.get()); popup.show(this, 0, y); SwingUtilities.invokeLater( new Runnable() { @Override public void run() { if (popup == null || !popup.isShowing() || !myPopupIsShowing) return; Action selection = actionToSelect; if (selection == null && myOptions.length > 0 && ensureSelection) { selection = getAction(); } if (selection == null) return; final MenuElement[] elements = popup.getSubElements(); for (MenuElement eachElement : elements) { if (eachElement instanceof JMenuItem) { JMenuItem eachItem = (JMenuItem) eachElement; if (selection.equals(eachItem.getAction())) { final MenuSelectionManager mgr = MenuSelectionManager.defaultManager(); final MenuElement[] path = new MenuElement[2]; path[0] = popup; path[1] = eachItem; mgr.setSelectedPath(path); break; } } } } }); } public void closePopup() { myUnderPopup.setVisible(false); myAbovePopup.setVisible(false); } private JPopupMenu fillMenu(boolean under) { final JPopupMenu result = new JBPopupMenu(); if (under && myOptions.length > 0) { final JMenuItem mainAction = new JBMenuItem(getAction()); configureItem(getMenuInfo(getAction()), mainAction); result.add(mainAction); result.addSeparator(); } for (Action each : myOptions) { if (getAction() == each) continue; final OptionInfo info = getMenuInfo(each); final JMenuItem eachItem = new JBMenuItem(each); configureItem(info, eachItem); result.add(eachItem); } if (!under && myOptions.length > 0) { result.addSeparator(); final JMenuItem mainAction = new JBMenuItem(getAction()); configureItem(getMenuInfo(getAction()), mainAction); result.add(mainAction); } return result; } private void configureItem(OptionInfo info, JMenuItem eachItem) { eachItem.setText(info.myPlainText); if (info.myMnemonic >= 0) { eachItem.setMnemonic(info.myMnemonic); eachItem.setDisplayedMnemonicIndex(info.myMnemonicIndex); } myOptionInfos.add(info); } public boolean isOkToProcessDefaultMnemonics() { return myOkToProcessDefaultMnemonics; } public static class OptionInfo { String myPlainText; int myMnemonic; int myMnemonicIndex; JBOptionButton myButton; Action myAction; OptionInfo( String plainText, int mnemonic, int mnemonicIndex, JBOptionButton button, Action action) { myPlainText = plainText; myMnemonic = mnemonic; myMnemonicIndex = mnemonicIndex; myButton = button; myAction = action; } public String getPlainText() { return myPlainText; } public int getMnemonic() { return myMnemonic; } public int getMnemonicIndex() { return myMnemonicIndex; } public JBOptionButton getButton() { return myButton; } public Action getAction() { return myAction; } } private OptionInfo getMenuInfo(Action each) { final String text = (String) each.getValue(Action.NAME); int mnemonic = -1; int mnemonicIndex = -1; StringBuilder plainText = new StringBuilder(); for (int i = 0; i < text.length(); i++) { char ch = text.charAt(i); if (ch == '&' || ch == '_') { if (i + 1 < text.length()) { final char mnemonicsChar = text.charAt(i + 1); mnemonic = Character.toUpperCase(mnemonicsChar); mnemonicIndex = i; } continue; } plainText.append(ch); } return new OptionInfo(plainText.toString(), mnemonic, mnemonicIndex, this, each); } public Set<OptionInfo> getOptionInfos() { return myOptionInfos; } @Override protected void paintChildren(Graphics g) { super.paintChildren(g); boolean dark = UIUtil.isUnderDarcula(); int off = dark ? 6 : 0; AllIcons.General.ArrowDown.paintIcon(this, g, myMoreRec.x - off, myMoreRec.y); if (dark) return; final Insets insets = getInsets(); int y1 = myMoreRec.y - 2; int y2 = getHeight() - insets.bottom - 2; if (y1 < getInsets().top) { y1 = insets.top; } final int x = myMoreRec.x - 4; UIUtil.drawDottedLine(((Graphics2D) g), x, y1, x, y2, null, Color.darkGray); } public void setOptionTooltipText(String text) { myOptionTooltipText = text; } public void setOkToProcessDefaultMnemonics(boolean ok) { myOkToProcessDefaultMnemonics = ok; } }