예제 #1
0
  /**
   * Paints the specified component according to the Look and Feel.
   *
   * <p>This method is not used by Synth Look and Feel. Painting is handled by the {@link
   * #paint(SynthContext,Graphics)} method.
   *
   * @param g the {@code Graphics} object used for painting
   * @param c the component being painted
   * @see #paint(SynthContext,Graphics)
   */
  @Override
  public void paint(Graphics g, JComponent c) {
    SynthContext context = getContext(c);

    paint(context, g);
    context.dispose();
  }
예제 #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 paintDragDivider(Graphics g, int x, int y, int w, int h) {
   SynthContext context = getContext(splitPane, Region.SPLIT_PANE_DIVIDER);
   context.setComponentState(((context.getComponentState() | MOUSE_OVER) ^ MOUSE_OVER) | PRESSED);
   Shape oldClip = g.getClip();
   g.clipRect(x, y, w, h);
   context
       .getPainter()
       .paintSplitPaneDragDivider(context, g, x, y, w, h, splitPane.getOrientation());
   g.setClip(oldClip);
   context.dispose();
 }
예제 #4
0
  /** Uninstalls the UI defaults. */
  @Override
  protected void uninstallDefaults() {
    SynthContext context = getContext(splitPane, ENABLED);

    style.uninstallDefaults(context);
    context.dispose();
    style = null;

    context = getContext(splitPane, Region.SPLIT_PANE_DIVIDER, ENABLED);
    dividerStyle.uninstallDefaults(context);
    context.dispose();
    dividerStyle = null;

    super.uninstallDefaults();
  }
예제 #5
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();
  }
예제 #6
0
 /** {@inheritDoc} */
 @Override
 public void paintBorder(SynthContext context, Graphics g, int x, int y, int w, int h) {
   context.getPainter().paintSplitPaneBorder(context, g, x, y, w, h);
 }
예제 #7
0
 private SynthContext getContext(JComponent c, Region region, int state) {
   if (region == Region.SPLIT_PANE_DIVIDER) {
     return SynthContext.getContext(SynthContext.class, c, region, dividerStyle, state);
   }
   return SynthContext.getContext(SynthContext.class, c, region, style, state);
 }
예제 #8
0
 private SynthContext getContext(JComponent c, int state) {
   return SynthContext.getContext(
       SynthContext.class, c, SynthLookAndFeel.getRegion(c), style, state);
 }