예제 #1
0
  private int getComponentState(JComponent c, Region subregion) {
    int state = SynthLookAndFeel.getComponentState(c);

    if (divider.isMouseOver()) {
      state |= MOUSE_OVER;
    }
    return state;
  }
예제 #2
0
  /**
   * Notifies this UI delegate to repaint the specified component. This method paints the component
   * background, then calls the {@link #paint(SynthContext,Graphics)} method.
   *
   * <p>In general, this method does not need to be overridden by subclasses. All Look and Feel
   * rendering code should reside in the {@code paint} method.
   *
   * @param g the {@code Graphics} object used for painting
   * @param c the component being painted
   * @see #paint(SynthContext,Graphics)
   */
  @Override
  public void update(Graphics g, JComponent c) {
    SynthContext context = getContext(c);

    SynthLookAndFeel.update(context, g);
    context.getPainter().paintSplitPaneBackground(context, g, 0, 0, c.getWidth(), c.getHeight());
    paint(context, g);
    context.dispose();
  }
예제 #3
0
  private void updateStyle(JSplitPane splitPane) {
    SynthContext context = getContext(splitPane, Region.SPLIT_PANE_DIVIDER, ENABLED);
    SynthStyle oldDividerStyle = dividerStyle;
    dividerStyle = SynthLookAndFeel.updateStyle(context, this);
    context.dispose();

    context = getContext(splitPane, ENABLED);
    SynthStyle oldStyle = style;

    style = SynthLookAndFeel.updateStyle(context, this);

    if (style != oldStyle) {
      Object value = style.get(context, "SplitPane.size");
      if (value == null) {
        value = Integer.valueOf(6);
      }
      LookAndFeel.installProperty(splitPane, "dividerSize", value);

      value = style.get(context, "SplitPane.oneTouchExpandable");
      if (value != null) {
        LookAndFeel.installProperty(splitPane, "oneTouchExpandable", value);
      }

      if (divider != null) {
        splitPane.remove(divider);
        divider.setDividerSize(splitPane.getDividerSize());
      }
      if (oldStyle != null) {
        uninstallKeyboardActions();
        installKeyboardActions();
      }
    }
    if (style != oldStyle || dividerStyle != oldDividerStyle) {
      // Only way to force BasicSplitPaneDivider to reread the
      // necessary properties.
      if (divider != null) {
        splitPane.remove(divider);
      }
      divider = createDefaultDivider();
      divider.setBasicSplitPaneUI(this);
      splitPane.add(divider, JSplitPane.DIVIDER);
    }
    context.dispose();
  }
예제 #4
0
 /** {@inheritDoc} */
 @Override
 public void propertyChange(PropertyChangeEvent e) {
   if (SynthLookAndFeel.shouldUpdateStyle(e)) {
     updateStyle((JSplitPane) e.getSource());
   }
 }
예제 #5
0
 private SynthContext getContext(JComponent c, int state) {
   return SynthContext.getContext(
       SynthContext.class, c, SynthLookAndFeel.getRegion(c), style, state);
 }
예제 #6
0
 /** {@inheritDoc} */
 @Override
 public SynthContext getContext(JComponent c) {
   return getContext(c, SynthLookAndFeel.getComponentState(c));
 }