/** Create UI components. */ private void createUIComponents() { templatesListPanel = new TemplatesListPanel(); editorPanel = new EditorPanel(); editorPanel.setPreferredSize(new Dimension(Integer.MAX_VALUE, 200)); templatesSplitter = new Splitter(false, 0.3f); templatesSplitter.setFirstComponent(templatesListPanel); templatesSplitter.setSecondComponent(editorPanel); languagesTable = new JBTable(); languagesTable.setModel(new LanguagesTableModel()); languagesTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); languagesTable.setColumnSelectionAllowed(false); languagesTable.setRowHeight(22); languagesTable.setPreferredScrollableViewportSize(new Dimension(-1, languagesTable.getRowHeight() * IgnoreBundle.LANGUAGES.size() / 2)); languagesTable.setStriped(true); languagesTable.setShowGrid(false); languagesTable.setBorder(JBUI.Borders.empty()); languagesTable.setDragEnabled(false); languagesPanel = ScrollPaneFactory.createScrollPane(languagesTable); donatePanel = new JBPanel(new BorderLayout()); donatePanel.setBorder(JBUI.Borders.empty(10, 0)); donatePanel.add(new JBLabel(IgnoreBundle.message("settings.general.donate")), BorderLayout.WEST); donatePanel.add(createLink( "Donate with PayPal", "https://www.paypal.me/hsz" ), BorderLayout.CENTER); }
public boolean isFindEditorOpened() { return splitter.getFirstComponent() == queryPanel; }
protected JComponent createSplitter(JComponent c1, JComponent c2, String proportionProperty, boolean vertical, float defaultSplit) { float savedProportion = PropertiesComponent.getInstance(project).getFloat(proportionProperty, defaultSplit); final Splitter splitter = new Splitter(vertical); splitter.setFirstComponent(c1); splitter.setSecondComponent(c2); splitter.setProportion(savedProportion); splitter.setHonorComponentsMinimumSize(true); splitter.addPropertyChangeListener(Splitter.PROP_PROPORTION, evt -> PropertiesComponent.getInstance(project).setValue(proportionProperty, Float.toString(splitter.getProportion()))); return splitter; }
@Override protected JComponent createCenterPanel() { final JComponent tree = super.createCenterPanel(); commitMessagePanel = new CommitMessage(project); commitMessagePanel.setCommitMessage("Initial commit"); Splitter splitter = new Splitter(true); splitter.setHonorComponentsMinimumSize(true); splitter.setFirstComponent(tree); splitter.setSecondComponent(commitMessagePanel); splitter.setProportion(SPLIT_PROPORTION); return splitter; }
/** * This is temporary solution for UIDesigner. <b>DO NOT</b> use it from code. * * @see #setFirstComponent(JComponent) * @see #setSecondComponent(JComponent) * @deprecated */ @Override public Component add(Component comp) { final int childCount = getComponentCount(); LOG.assertTrue(childCount >= 1); if (childCount > 3) { throw new IllegalStateException("" + childCount); } LOG.assertTrue(childCount <= 3); if (childCount == 1) { setFirstComponent((JComponent)comp); } else { setSecondComponent((JComponent)comp); } return comp; }
splitter.setOrientation(true); splitter.setProportion(0.2f); splitter.setSecondComponent(loadingDecorator.getComponent());
public void run() { if(gradleBaseDir != null) { toolWindow.setTitle("- " + gradleBaseDir); } splitter.setFirstComponent(ScrollPaneFactory.createScrollPane(fullTree)); splitter.setSecondComponent(ScrollPaneFactory.createScrollPane(information)); } });
@Override protected void processMouseMotionEvent(MouseEvent e) { super.processMouseMotionEvent(e); if (!myResizeEnabled) return; if (MouseEvent.MOUSE_DRAGGED == e.getID()) { myPoint = SwingUtilities.convertPoint(this, e.getPoint(), Splitter.this); float proportion; if (isVertical()) { if (getHeight() > 0) { proportion = Math.min(1.0f, Math.max(.0f, Math .min(Math.max(getMinProportion(true), (float)myPoint.y / (float)Splitter.this.getHeight()), 1 - getMinProportion(false)))); setProportion(proportion); } } else { if (getWidth() > 0) { proportion = Math.min(1.0f, Math.max(.0f, Math .min(Math.max(getMinProportion(true), (float)myPoint.x / (float)Splitter.this.getWidth()), 1 - getMinProportion(false)))); setProportion(proportion); } } } }
public void closeFindEditor() { splitter.setFirstComponent(null); queryPanel.setVisible(false); }
private void updateProportion(Split split, float direction) { float stretch = direction * (split.orientation == vertical ? widthStretch : heightStretch); Splitter splitter = ((IdeSplitter) split).splitter; splitter.setProportion(splitter.getProportion() + stretch); }
@Override public boolean onClick(@NotNull MouseEvent e, int clickCount) { setProportion(getMinProportion(true)); return true; } }.installOn(splitUpLabel);
@Override protected void processMouseEvent(MouseEvent e) { super.processMouseEvent(e); if (e.getID() == MouseEvent.MOUSE_CLICKED) { if (mySwitchOrientationEnabled && e.getClickCount() == 1 && SwingUtilities.isLeftMouseButton(e) && (SystemInfo.isMac ? e.isMetaDown() : e.isControlDown())) { Splitter.this.setOrientation(!Splitter.this.getOrientation()); } if (myResizeEnabled && e.getClickCount() == 2) { Splitter.this.setProportion(.5f); } } }
int width = getWidth(); int height = getHeight(); int total = isVertical() ? height : width; if (total <= 0) return; if (!isNull(myFirstComponent) && myFirstComponent.isVisible() && !isNull(mySecondComponent) && mySecondComponent.isVisible()) { int d = getDividerWidth(); double size1; if (isHonorMinimumSize()) { double mSize1 = isVertical() ? myFirstComponent.getMinimumSize().getHeight() : myFirstComponent.getMinimumSize().getWidth(); double mSize2 = isVertical() ? mySecondComponent.getMinimumSize().getHeight() : mySecondComponent.getMinimumSize().getWidth(); if (isVertical()) { firstRect.setBounds(0, 0, width, iSize1); dividerRect.setBounds(0, iSize1, width, d); else if (!isNull(myFirstComponent) && myFirstComponent.isVisible()) { // only first component is visible hideNull(mySecondComponent); myDivider.setVisible(false); myFirstComponent.setBounds(0, 0, width, height); myFirstComponent.revalidate(); else if (!isNull(mySecondComponent) && mySecondComponent.isVisible()) { // only second component is visible hideNull(myFirstComponent); myDivider.setVisible(false);
public Splitter(boolean vertical, float proportion, float minProp, float maxProp) { myMinProp = minProp; myMaxProp = maxProp; LOG.assertTrue(minProp >= 0.0f); LOG.assertTrue(maxProp <= 1.0f); LOG.assertTrue(minProp <= maxProp); myVerticalSplit = vertical; myShowDividerControls = false; myShowDividerIcon = true; myHonorMinimumSize = true; myDivider = createDivider(); setProportion(proportion); myDividerWidth = 7; super.add(myDivider); setOpaque(false); }
public JComponent getOtherComponent(final Component comp) { if (comp.equals(getFirstComponent())) return getSecondComponent(); if (comp.equals(getSecondComponent())) return getFirstComponent(); LOG.error("invalid component"); return getFirstComponent(); }
@Override public boolean onClick(@NotNull MouseEvent e, int clickCount) { setProportion(.5f); return true; } }.installOn(splitCenterlabel);
public float getMinProportion(boolean first) { JComponent component = first? myFirstComponent : mySecondComponent; if (isHonorMinimumSize()) { if (component != null && myFirstComponent != null && myFirstComponent.isVisible() && mySecondComponent != null && mySecondComponent.isVisible()) { if (isVertical()) { return (float)component.getMinimumSize().height / (float)(getHeight() - getDividerWidth()); } else { return (float)component.getMinimumSize().width / (float)(getWidth() - getDividerWidth()); } } } return 0.0f; }
this.project = p; this.toolWindow = t; this.splitter = new Splitter(false, 0.75f); this.information = new JTextArea(); this.toolingLogger = initToolingLogger();
@Override public Dimension getPreferredSize() { final int dividerWidth = getDividerWidth(); if (myFirstComponent != null && myFirstComponent.isVisible() && mySecondComponent != null && mySecondComponent.isVisible()) { final Dimension firstPrefSize = myFirstComponent.getPreferredSize(); final Dimension secondPrefSize = mySecondComponent.getPreferredSize(); return isVertical() ? new Dimension(Math.max(firstPrefSize.width, secondPrefSize.width), firstPrefSize.height + dividerWidth + secondPrefSize.height) : new Dimension(firstPrefSize.width + dividerWidth + secondPrefSize.width, Math.max(firstPrefSize.height, secondPrefSize.height)); } if (myFirstComponent != null && myFirstComponent.isVisible()) { // only first component is visible return myFirstComponent.getPreferredSize(); } if (mySecondComponent != null && mySecondComponent.isVisible()) { // only second component is visible return mySecondComponent.getPreferredSize(); } return super.getPreferredSize(); } public void skipNextLayouting() {
public IdeSplitter(LayoutElement first, LayoutElement second, Splitter splitter) { super(first, second, splitter.isVertical() ? horizontal : vertical); this.splitter = splitter; } }