basicsplitpaneui.java

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· Java 代码 · 共 1,522 行 · 第 1/3 页

JAVA
1,522
字号
   * This method reverses the work done in installKeyboardActions.   */  protected void uninstallKeyboardActions()  {    // FIXME: implement.  }  /**   * This method creates a new PropertyChangeListener.   *   * @return A new PropertyChangeListener.   */  protected PropertyChangeListener createPropertyChangeListener()  {    return new PropertyHandler();  }  /**   * This method creates a new FocusListener.   *   * @return A new FocusListener.   */  protected FocusListener createFocusListener()  {    return new FocusHandler();  }  /**   * This method creates a new ActionListener for up and left key presses.   *   * @return A new ActionListener for up and left keys.   *   * @deprecated 1.3   */  protected ActionListener createKeyboardUpLeftListener()  {    return new KeyboardUpLeftHandler();  }  /**   * This method creates a new ActionListener for down and right key presses.   *   * @return A new ActionListener for down and right keys.   *   * @deprecated 1.3   */  protected ActionListener createKeyboardDownRightListener()  {    return new KeyboardDownRightHandler();  }  /**   * This method creates a new ActionListener for home key presses.   *   * @return A new ActionListener for home keys.   *   * @deprecated   */  protected ActionListener createKeyboardHomeListener()  {    return new KeyboardHomeHandler();  }  /**   * This method creates a new ActionListener for end key presses.i   *   * @return A new ActionListener for end keys.   *   * @deprecated 1.3   */  protected ActionListener createKeyboardEndListener()  {    return new KeyboardEndHandler();  }  /**   * This method creates a new ActionListener for resize toggle key events.   *   * @return A new ActionListener for resize toggle keys.   *   * @deprecated 1.3   */  protected ActionListener createKeyboardResizeToggleListener()  {    return new KeyboardResizeToggleHandler();  }  /**   * This method returns the orientation of the JSplitPane.   *   * @return The orientation of the JSplitPane.   */  public int getOrientation()  {    return splitPane.getOrientation();  }  /**   * This method sets the orientation of the JSplitPane.   *   * @param orientation The new orientation of the JSplitPane.   */  public void setOrientation(int orientation)  {    splitPane.setOrientation(orientation);  }  /**   * This method returns true if the JSplitPane is using continuous layout.   *   * @return True if the JSplitPane is using continuous layout.   */  public boolean isContinuousLayout()  {    return splitPane.isContinuousLayout();  }  /**   * This method sets the continuous layout property of the JSplitPane.   *   * @param b True if the JsplitPane is to use continuous layout.   */  public void setContinuousLayout(boolean b)  {    splitPane.setContinuousLayout(b);  }  /**   * This method returns the last location the divider was dragged to.   *   * @return The last location the divider was dragged to.   */  public int getLastDragLocation()  {    return lastDragLocation;  }  /**   * This method sets the last location the divider was dragged to.   *   * @param l The last location the divider was dragged to.   */  public void setLastDragLocation(int l)  {    lastDragLocation = l;  }  /**   * This method returns the BasicSplitPaneDivider that divides this   * JSplitPane.   *   * @return The divider for the JSplitPane.   */  public BasicSplitPaneDivider getDivider()  {    return divider;  }  /**   * This method creates a nonContinuousLayoutDivider for use with the   * JSplitPane in nonContinousLayout mode. The default divider is a gray   * Canvas.   *   * @return The default nonContinousLayoutDivider.   */  protected Component createDefaultNonContinuousLayoutDivider()  {    if (nonContinuousLayoutDivider == null)      {	nonContinuousLayoutDivider = new Canvas();	nonContinuousLayoutDivider.setBackground(Color.DARK_GRAY);      }    return nonContinuousLayoutDivider;  }  /**   * This method sets the component to use as the nonContinuousLayoutDivider.   *   * @param newDivider The component to use as the nonContinuousLayoutDivider.   */  protected void setNonContinuousLayoutDivider(Component newDivider)  {    setNonContinuousLayoutDivider(newDivider, true);  }  /**   * This method sets the component to use as the nonContinuousLayoutDivider.   *   * @param newDivider The component to use as the nonContinuousLayoutDivider.   * @param rememberSizes FIXME: document.   */  protected void setNonContinuousLayoutDivider(Component newDivider,                                               boolean rememberSizes)  {    // FIXME: use rememberSizes for something    nonContinuousLayoutDivider = newDivider;  }  /**   * This method returns the nonContinuousLayoutDivider.   *   * @return The nonContinuousLayoutDivider.   */  public Component getNonContinuousLayoutDivider()  {    return nonContinuousLayoutDivider;  }  /**   * This method returns the JSplitPane that this BasicSplitPaneUI draws.   *   * @return The JSplitPane.   */  public JSplitPane getSplitPane()  {    return splitPane;  }  /**   * This method creates the divider used normally with the JSplitPane.   *   * @return The default divider.   */  public BasicSplitPaneDivider createDefaultDivider()  {    if (divider == null)      divider = new BasicSplitPaneDivider(this);    return divider;  }  /**   * This method is called when JSplitPane's resetToPreferredSizes is called.   * It resets the sizes of all components in the JSplitPane.   *   * @param jc The JSplitPane to reset.   */  public void resetToPreferredSizes(JSplitPane jc)  {    layoutManager.resetToPreferredSizes();  }  /**   * This method sets the location of the divider.   *   * @param jc The JSplitPane to set the divider location in.   * @param location The new location of the divider.   */  public void setDividerLocation(JSplitPane jc, int location)  {    setLastDragLocation(getDividerLocation(splitPane));    splitPane.setLastDividerLocation(getDividerLocation(splitPane));    int[] tmpSizes = layoutManager.getSizes();    tmpSizes[0] = location                  - layoutManager.getInitialLocation(splitPane.getInsets());    tmpSizes[1] = layoutManager.getAvailableSize(splitPane.getSize(),                                                 splitPane.getInsets())                  - tmpSizes[0] - tmpSizes[1];    layoutManager.setSizes(tmpSizes);    splitPane.revalidate();    splitPane.repaint();  }  /**   * This method returns the location of the divider.   *   * @param jc The JSplitPane to retrieve the location for.   *   * @return The location of the divider.   */  public int getDividerLocation(JSplitPane jc)  {    return layoutManager.sizes[0]           + layoutManager.getInitialLocation(splitPane.getInsets());  }  /**   * This method returns the smallest value possible for the location of the   * divider.   *   * @param jc The JSplitPane.   *   * @return The minimum divider location.   */  public int getMinimumDividerLocation(JSplitPane jc)  {    int value = layoutManager.getInitialLocation(jc.getInsets());    if (layoutManager.components[0] != null)      value += layoutManager.minimumSizeOfComponent(0);    return value;  }  /**   * This method returns the largest value possible for the location of the   * divider.   *   * @param jc The JSplitPane.   *   * @return The maximum divider location.   */  public int getMaximumDividerLocation(JSplitPane jc)  {    int value = layoutManager.getInitialLocation(jc.getInsets())                + layoutManager.getAvailableSize(jc.getSize(), jc.getInsets())                - splitPane.getDividerSize();    if (layoutManager.components[1] != null)      value -= layoutManager.minimumSizeOfComponent(1);    return value;  }  /**   * This method is called after the children of the JSplitPane are painted.   *   * @param jc The JSplitPane.   * @param g The Graphics object to paint with.   */  public void finishedPaintingChildren(JSplitPane jc, Graphics g)  {    if (! splitPane.isContinuousLayout() && nonContinuousLayoutDivider != null        && nonContinuousLayoutDivider.isVisible())      javax.swing.SwingUtilities.paintComponent(g, nonContinuousLayoutDivider,                                                null,                                                nonContinuousLayoutDivider                                                .getBounds());  }  /**   * This method is called to paint the JSplitPane.   *   * @param g The Graphics object to paint with.   * @param jc The JSplitPane to paint.   */  public void paint(Graphics g, JComponent jc)  {    // Do nothing. All the painting is handled by children.  }  /**   * This method returns the preferred size of the JSplitPane.   *   * @param jc The JSplitPane.   *   * @return The preferred size of the JSplitPane.   */  public Dimension getPreferredSize(JComponent jc)  {    return layoutManager.preferredLayoutSize((Container) jc);  }  /**   * This method returns the minimum size of the JSplitPane.   *   * @param jc The JSplitPane.   *   * @return The minimum size of the JSplitPane.   */  public Dimension getMinimumSize(JComponent jc)  {    return layoutManager.minimumLayoutSize((Container) jc);  }  /**   * This method returns the maximum size of the JSplitPane.   *   * @param jc The JSplitPane.   *   * @return The maximum size of the JSplitPane.   */  public Dimension getMaximumSize(JComponent jc)  {    return layoutManager.maximumLayoutSize((Container) jc);  }  /**   * This method returns the border insets of the current border.   *   * @param jc The JSplitPane.   *   * @return The current border insets.   */  public Insets getInsets(JComponent jc)  {    return splitPane.getBorder().getBorderInsets(splitPane);  }  /**   * This method resets the current layout manager. The type of layout manager   * is dependent on the current orientation.   */  protected void resetLayoutManager()  {    if (getOrientation() == JSplitPane.HORIZONTAL_SPLIT)      layoutManager = new BasicHorizontalLayoutManager();    else      layoutManager = new BasicVerticalLayoutManager();    layoutManager.invalidateLayout(splitPane);    layoutManager.updateComponents();    getSplitPane().setLayout(layoutManager);    // invalidating by itself does not invalidate the layout.    getSplitPane().revalidate();  }  /**   * This method is called when dragging starts. It resets lastDragLocation   * and dividerSize.   */  protected void startDragging()  {    dividerSize = divider.getDividerSize();    setLastDragLocation(-1);    if (! splitPane.getLeftComponent().isLightweight()        || ! splitPane.getRightComponent().isLightweight())      draggingHW = true;    if (splitPane.isContinuousLayout())      nonContinuousLayoutDivider.setVisible(false);    else      {	nonContinuousLayoutDivider.setVisible(true);	nonContinuousLayoutDivider.setBounds(divider.getBounds());      }    splitPane.revalidate();    splitPane.repaint();  }  /**   * This method is called whenever the divider is dragged. If the JSplitPane   * is in continuousLayout mode, the divider needs to be moved and the   * JSplitPane needs to be laid out.   *   * @param location The new location of the divider.   */  protected void dragDividerTo(int location)  {    location = validLocation(location);    if (beginDragDividerLocation == -1)      beginDragDividerLocation = location;    if (splitPane.isContinuousLayout())      splitPane.setDividerLocation(location);    else      {	Point p = nonContinuousLayoutDivider.getLocation();	if (getOrientation() == JSplitPane.HORIZONTAL_SPLIT)	  p.x = location;	else	  p.y = location;	nonContinuousLayoutDivider.setLocation(p);      }    setLastDragLocation(location);    splitPane.repaint();  }  /**   * This method is called when the dragging is finished.   *   * @param location The location where the drag finished.   */  protected void finishDraggingTo(int location)  {    if (nonContinuousLayoutDivider != null)      nonContinuousLayoutDivider.setVisible(false);    draggingHW = false;    location = validLocation(location);    dragDividerTo(location);    splitPane.setDividerLocation(location);    splitPane.setLastDividerLocation(beginDragDividerLocation);    beginDragDividerLocation = -1;    splitPane.repaint();  }  /**   * This method returns the width of one of the sides of the divider's border.   *   * @return The width of one side of the divider's border.   *   * @deprecated 1.3   */  protected int getDividerBorderSize()  {    if (getOrientation() == JSplitPane.HORIZONTAL_SPLIT)      return divider.getBorder().getBorderInsets(divider).left;    else      return divider.getBorder().getBorderInsets(divider).top;  }  /**   * This is a helper method that returns a valid location for the divider   * when dragging.   *   * @param location The location to check.   *   * @return A valid location.   */  private int validLocation(int location)  {    if (location < getMinimumDividerLocation(splitPane))      return getMinimumDividerLocation(splitPane);    if (location > getMaximumDividerLocation(splitPane))      return getMaximumDividerLocation(splitPane);    return location;  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?