diff --git a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommButtonUI.java b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommButtonUI.java index cc332639d..559a3adcf 100644 --- a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommButtonUI.java +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommButtonUI.java @@ -10,8 +10,8 @@ import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; -import java.awt.Image; import java.awt.Rectangle; +import java.awt.image.BufferedImage; import javax.swing.AbstractButton; import javax.swing.ButtonModel; @@ -28,31 +28,17 @@ */ public class SIPCommButtonUI extends MetalButtonUI { - private final static Image buttonLeft - = ImageLoader.getImage(ImageLoader.BUTTON_LEFT); - - private final static Image buttonMiddle - = ImageLoader.getImage(ImageLoader.BUTTON_MIDDLE); - - private final static Image buttonRight - = ImageLoader.getImage(ImageLoader.BUTTON_RIGHT); - - private final static Image buttonRolloverLeft - = ImageLoader.getImage(ImageLoader.BUTTON_ROLLOVER_LEFT); - - private final static Image buttonRolloverMiddle - = ImageLoader.getImage(ImageLoader.BUTTON_ROLLOVER_MIDDLE); - - private final static Image buttonRolloverRight - = ImageLoader.getImage(ImageLoader.BUTTON_ROLLOVER_RIGHT); - - private final static SIPCommButtonUI sipCommButtonUI = new SIPCommButtonUI(); - -// ******************************** + private final static BufferedImage buttonBG + = ImageLoader.getImage(ImageLoader.BUTTON); + + private final static BufferedImage buttonRolloverBG + = ImageLoader.getImage(ImageLoader.BUTTON_ROLLOVER); + + // ******************************** // Create PLAF // ******************************** public static ComponentUI createUI(JComponent c) { - return sipCommButtonUI; + return new SIPCommButtonUI(); } // ******************************** @@ -81,23 +67,34 @@ public void paint(Graphics g, JComponent c) { AbstractButton button = (AbstractButton)c; ButtonModel model = button.getModel(); - Image leftImg; - Image middleImg; - Image rightImg; + BufferedImage leftImg; + BufferedImage middleImg; + BufferedImage rightImg; + int imgWidth; + int imgHeight; + int indentWidth = 10; if(model.isRollover()){ + imgWidth = buttonRolloverBG.getWidth(); + imgHeight = buttonRolloverBG.getHeight(); - leftImg = buttonRolloverLeft; - middleImg = buttonRolloverMiddle; - rightImg = buttonRolloverRight; + leftImg = buttonRolloverBG.getSubimage(0, 0, indentWidth, imgHeight); + middleImg = buttonRolloverBG.getSubimage(indentWidth, 0, + imgWidth-2*indentWidth, + imgHeight); + rightImg = buttonRolloverBG.getSubimage(imgWidth-indentWidth, 0, + indentWidth, imgHeight); } else{ - leftImg = buttonLeft; - middleImg = buttonMiddle; - rightImg = buttonRight; + imgWidth = buttonBG.getWidth(); + imgHeight = buttonBG.getHeight(); + + leftImg = buttonBG.getSubimage(0, 0, 10, imgHeight); + middleImg = buttonBG.getSubimage(10, 0, imgWidth-20, imgHeight); + rightImg = buttonBG.getSubimage(imgWidth-10, 0, 10, imgHeight); } - int indentWidth = leftImg.getWidth(null); + g.drawImage(leftImg, 0, 0, indentWidth, c.getHeight(), null); g.drawImage(middleImg, indentWidth, 0, c.getWidth()-2*indentWidth, c.getHeight(), null); diff --git a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommDefaultTheme.java b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommDefaultTheme.java index ae5d51b60..46f4c62da 100644 --- a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommDefaultTheme.java +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommDefaultTheme.java @@ -6,6 +6,7 @@ */ package net.java.sip.communicator.impl.gui.lookandfeel; +import java.awt.Color; import java.awt.Insets; import java.util.Arrays; import java.util.List; @@ -77,16 +78,16 @@ public void addCustomEntriesToTable(UIDefaults table) { "InternalFrame.activeTitleGradient", buttonGradient, - "OptionPane.warningIcon", - ImageLoader.getImage(ImageLoader.WARNING_ICON), + // "OptionPane.warningIcon", + // ImageLoader.getImage(ImageLoader.WARNING_ICON), "RadioButton.gradient", buttonGradient, "RadioButton.rollover", Boolean.TRUE, "RadioButtonMenuItem.gradient", buttonGradient, - "ScrollBar.gradient", buttonGradient, - + "ScrollBar.width", new Integer(12), + "Slider.altTrackColor", new ColorUIResource(0xD2E2EF), "Slider.gradient", sliderGradient, "Slider.focusGradient", sliderGradient, @@ -95,6 +96,14 @@ public void addCustomEntriesToTable(UIDefaults table) { "SplitPane.dividerFocusColor", LIGHT_BLUE_GRAY, "SplitPane.dividerSize", new Integer(5), + "ScrollBar.horizontalThumbIcon", + ImageLoader.getImage(ImageLoader.SCROLLBAR_HORIZONTAL), + "ScrollBar.verticalThumbIcon", + ImageLoader.getImage(ImageLoader.SCROLLBAR_VERTICAL), + "ScrollBar.trackHighlight", GRAY, + "ScrollBar.highlight", LIGHT_GRAY, + "ScrollBar.darkShadow", GRAY, + "TabbedPane.borderHightlightColor", LIGHT_BLUE, "TabbedPane.contentBorderInsets", new Insets(2, 2, 3, 3), "TabbedPane.selected", LIGHT_GRAY, diff --git a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommLookAndFeel.java b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommLookAndFeel.java index b9cfb09ed..c0fd0ed5a 100644 --- a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommLookAndFeel.java +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommLookAndFeel.java @@ -44,7 +44,8 @@ protected void initClassDefaults(UIDefaults table) { Object[] uiDefaults = { "ButtonUI", lfPackageName + "SIPCommButtonUI", - "SplitPaneUI", lfPackageName + "SIPCommSplitPaneUI" + "SplitPaneUI", lfPackageName + "SIPCommSplitPaneUI", + "ScrollBarUI", lfPackageName + "SIPCommScrollBarUI" }; table.putDefaults(uiDefaults); } diff --git a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommScrollBarUI.java b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommScrollBarUI.java new file mode 100644 index 000000000..01aebecd8 --- /dev/null +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommScrollBarUI.java @@ -0,0 +1,182 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ +package net.java.sip.communicator.impl.gui.lookandfeel; + +import java.awt.Graphics; +import java.awt.Image; +import java.awt.Rectangle; +import java.awt.image.BufferedImage; + +import javax.swing.JComponent; +import javax.swing.JScrollBar; +import javax.swing.UIManager; +import javax.swing.plaf.ComponentUI; +import javax.swing.plaf.metal.MetalScrollBarUI; + +/** + * The SIPCommScrollBarUI implementation. + * + * @author Yana Stamcheva + */ +public class SIPCommScrollBarUI extends MetalScrollBarUI { + + private BufferedImage horizontalThumb; + private BufferedImage verticalThumb; + + public SIPCommScrollBarUI(){ + horizontalThumb = (BufferedImage)UIManager.get("ScrollBar.horizontalThumbIcon"); + verticalThumb = (BufferedImage)UIManager.get("ScrollBar.verticalThumbIcon"); + } + + // ******************************** + // Create PLAF + // ******************************** + public static ComponentUI createUI(JComponent c) { + return new SIPCommScrollBarUI(); + } + + protected void paintTrack( Graphics g, JComponent c, Rectangle trackBounds ) + { + g.translate( trackBounds.x, trackBounds.y ); + + boolean leftToRight = c.getComponentOrientation().isLeftToRight(); + + if ( scrollbar.getOrientation() == JScrollBar.VERTICAL ) + { + if ( !isFreeStanding ) { + trackBounds.width += 2; + if ( !leftToRight ) { + g.translate( -1, 0 ); + } + } + + g.setColor(this.trackColor); + g.fillRect(0, 0, trackBounds.width-2, trackBounds.height); + + g.setColor(this.trackHighlightColor); + g.drawRect(0, 0, trackBounds.width-2, trackBounds.height); + + if ( !isFreeStanding ) { + trackBounds.width -= 2; + if ( !leftToRight ) { + g.translate( 1, 0 ); + } + } + } + else // HORIZONTAL + { + if ( !isFreeStanding ) { + trackBounds.height += 2; + } + + g.setColor(this.trackColor); + g.fillRect(0, 0, trackBounds.width, trackBounds.height-2); + + g.setColor(this.trackHighlightColor); + g.drawRect(0, 0, trackBounds.width, trackBounds.height-2); + + if ( !isFreeStanding ) { + trackBounds.height -= 2; + } + } + g.translate( -trackBounds.x, -trackBounds.y ); + } + + /** + * Paints the bar of the scroll bar. + */ + protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) + { + if (!c.isEnabled()) { + return; + } + + boolean leftToRight = c.getComponentOrientation().isLeftToRight(); + + g.translate( thumbBounds.x, thumbBounds.y ); + + int imgWidth; + int imgHeight; + int indentWidth = 10; + + if ( scrollbar.getOrientation() == JScrollBar.VERTICAL ) + { + if ( !isFreeStanding ) { + thumbBounds.width += 2; + + if ( !leftToRight ) { + g.translate( -1, 0 ); + } + } + imgWidth = verticalThumb.getWidth(); + imgHeight = verticalThumb.getHeight(); + + Image topImage + = verticalThumb.getSubimage(0, 0, + imgWidth, + indentWidth); + Image middleImage + = verticalThumb.getSubimage(0, indentWidth, + imgWidth, + imgHeight-2*indentWidth); + Image bottomImage + = verticalThumb.getSubimage(0, imgHeight-indentWidth, + imgWidth, indentWidth); + + g.drawImage(topImage, 0, 0, + thumbBounds.width-2, indentWidth , null); + + g.drawImage(middleImage, thumbBounds.x, indentWidth, + thumbBounds.width-2, + thumbBounds.height-indentWidth , null); + + g.drawImage(bottomImage, thumbBounds.x, thumbBounds.height-indentWidth, + thumbBounds.width-2, indentWidth, null); + + if ( !isFreeStanding ) { + thumbBounds.width -= 2; + if ( !leftToRight ) { + g.translate( 1, 0 ); + } + } + } + else // HORIZONTAL + { + if ( !isFreeStanding ) { + thumbBounds.height += 2; + } + imgWidth = horizontalThumb.getWidth(); + imgHeight = horizontalThumb.getHeight(); + + Image leftImage + = horizontalThumb.getSubimage(0, 0, + indentWidth, imgHeight); + Image middleImage + = horizontalThumb.getSubimage(indentWidth, 0, + imgWidth-2*indentWidth, + imgHeight); + Image rightImage + = horizontalThumb.getSubimage(imgWidth-indentWidth, 0, + indentWidth, + imgHeight); + + g.drawImage(leftImage, 0, 0, + indentWidth, thumbBounds.height, null); + + g.drawImage(middleImage, thumbBounds.x+indentWidth, thumbBounds.y, + thumbBounds.width-2*indentWidth, thumbBounds.height , null); + + g.drawImage(rightImage, thumbBounds.width-indentWidth, thumbBounds.y, + indentWidth, thumbBounds.height, null); + + if ( !isFreeStanding ) { + thumbBounds.height -= 2; + } + } + g.translate( -thumbBounds.x, -thumbBounds.y ); + } +} diff --git a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommSplitPaneDivider.java b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommSplitPaneDivider.java index 9ff83f449..00f766c44 100644 --- a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommSplitPaneDivider.java +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommSplitPaneDivider.java @@ -16,6 +16,7 @@ import java.awt.Insets; import java.awt.LayoutManager; import java.awt.Rectangle; +import java.awt.image.BufferedImage; import javax.swing.JButton; import javax.swing.JSplitPane; @@ -33,8 +34,8 @@ */ class SIPCommSplitPaneDivider extends BasicSplitPaneDivider { - private Image horizontalDivider = ImageLoader.getImage(ImageLoader.SPLITPANE_HORIZONTAL); - private Image verticalDivider = ImageLoader.getImage(ImageLoader.SPLITPANE_VERTICAL); + private BufferedImage horizontalDivider = ImageLoader.getImage(ImageLoader.SPLITPANE_HORIZONTAL); + private BufferedImage verticalDivider = ImageLoader.getImage(ImageLoader.SPLITPANE_VERTICAL); public SIPCommSplitPaneDivider(BasicSplitPaneUI ui) { super(ui); @@ -144,12 +145,7 @@ public void paint(Graphics g) { } } } - } - - // Don't want the button to participate in focus traversable. - public boolean isFocusTraversable() { - return false; - } + } }; b.setRequestFocusEnabled(false); @@ -242,11 +238,6 @@ public void paint(Graphics g) { } } } - - // Don't want the button to participate in focus traversable. - public boolean isFocusTraversable() { - return false; - } }; b.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); diff --git a/src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommToolBar.java b/src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommToolBar.java index 8f00bab17..f8eb043f3 100644 --- a/src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommToolBar.java +++ b/src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommToolBar.java @@ -11,6 +11,7 @@ import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; +import java.awt.image.BufferedImage; import javax.swing.Box; import javax.swing.JSeparator; @@ -44,7 +45,7 @@ protected void paintBorder(Graphics g){ Graphics2D g2 = (Graphics2D)g; - Image dragImage = ImageLoader.getImage(ImageLoader.TOOLBAR_DRAG_ICON); + BufferedImage dragImage = ImageLoader.getImage(ImageLoader.TOOLBAR_DRAG_ICON); g2.drawImage(dragImage, 0, (this.getHeight() - dragImage.getHeight(null))/2 - 2, null); diff --git a/src/net/java/sip/communicator/impl/gui/main/customcontrols/tabbedPane/CloseTabPaneEnhancedUI.java b/src/net/java/sip/communicator/impl/gui/main/customcontrols/tabbedPane/CloseTabPaneEnhancedUI.java index 781799bbe..fbf541cf3 100644 --- a/src/net/java/sip/communicator/impl/gui/main/customcontrols/tabbedPane/CloseTabPaneEnhancedUI.java +++ b/src/net/java/sip/communicator/impl/gui/main/customcontrols/tabbedPane/CloseTabPaneEnhancedUI.java @@ -20,6 +20,7 @@ import java.awt.Graphics2D; import java.awt.Image; import java.awt.Rectangle; +import java.awt.image.BufferedImage; import javax.swing.JComponent; import javax.swing.SwingUtilities; @@ -44,9 +45,9 @@ public class CloseTabPaneEnhancedUI extends CloseTabPaneUI { private static final Color highlightedColor = new Color(249, 117, 10); - private static Image TAB_BACKGROUND = ImageLoader.getImage(ImageLoader.TAB_BG); + private static BufferedImage TAB_BACKGROUND = ImageLoader.getImage(ImageLoader.TAB_BG); - private static Image CLOSABLE_TAB_BACKGROUND + private static BufferedImage CLOSABLE_TAB_BACKGROUND = ImageLoader.getImage(ImageLoader.CLOSABLE_TAB_BG); @@ -119,7 +120,7 @@ protected void paintContentBorderRightEdge(Graphics g, int tabPlacement, protected void paintTabBackground(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected) { - Image img= null; + BufferedImage img= null; Graphics2D g2 = (Graphics2D) g; diff --git a/src/net/java/sip/communicator/impl/gui/utils/Constants.java b/src/net/java/sip/communicator/impl/gui/utils/Constants.java index 0c3713873..72a401eb3 100755 --- a/src/net/java/sip/communicator/impl/gui/utils/Constants.java +++ b/src/net/java/sip/communicator/impl/gui/utils/Constants.java @@ -12,6 +12,7 @@ import java.awt.Color; import java.awt.Font; import java.awt.Image; +import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -329,8 +330,8 @@ public static Map getProtocolStatusIcons(String protocolName) { return protocolStatusList; } - public static Image getStatusIcon(PresenceStatus status) { - return (Image)mainStatusSet.get(status); + public static BufferedImage getStatusIcon(PresenceStatus status) { + return (BufferedImage)mainStatusSet.get(status); } /** diff --git a/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java b/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java index 4c3f4b22c..a0e535d39 100644 --- a/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java +++ b/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java @@ -32,16 +32,10 @@ public class ImageLoader { * =========================LOOK AND FEEL IMAGES========================== * ----------------------------------------------------------------------- */ - public static final ImageID BUTTON_LEFT = new ImageID("BUTTON_LEFT"); - public static final ImageID BUTTON_MIDDLE = new ImageID("BUTTON_MIDDLE"); - public static final ImageID BUTTON_RIGHT = new ImageID("BUTTON_RIGHT"); + public static final ImageID BUTTON = new ImageID("BUTTON"); - public static final ImageID BUTTON_ROLLOVER_LEFT - = new ImageID("BUTTON_ROLLOVER_LEFT"); - public static final ImageID BUTTON_ROLLOVER_MIDDLE - = new ImageID("BUTTON_ROLLOVER_MIDDLE"); - public static final ImageID BUTTON_ROLLOVER_RIGHT - = new ImageID("BUTTON_ROLLOVER_RIGHT"); + public static final ImageID BUTTON_ROLLOVER + = new ImageID("BUTTON_ROLLOVER"); public static final ImageID SPLITPANE_HORIZONTAL = new ImageID("SPLITPANE_HORIZONTAL"); @@ -49,6 +43,12 @@ public class ImageLoader { public static final ImageID SPLITPANE_VERTICAL = new ImageID("SPLITPANE_VERTICAL"); + public static final ImageID SCROLLBAR_VERTICAL + = new ImageID("SCROLLBAR_VERTICAL"); + + public static final ImageID SCROLLBAR_HORIZONTAL + = new ImageID("SCROLLBAR_HORIZONTAL"); + /*------------------------------------------------------------------------ * ============================APPLICATION ICONS ========================= * ----------------------------------------------------------------------- @@ -506,7 +506,7 @@ public static ArrayList getDefaultSmiliesPack() { * Loads an image from a given image identifier. */ - public static Image getImage(ImageID imageID) { + public static BufferedImage getImage(ImageID imageID) { BufferedImage image = null; diff --git a/src/net/java/sip/communicator/impl/gui/utils/images.properties b/src/net/java/sip/communicator/impl/gui/utils/images.properties index 4ac594a39..b77a2aef5 100644 --- a/src/net/java/sip/communicator/impl/gui/utils/images.properties +++ b/src/net/java/sip/communicator/impl/gui/utils/images.properties @@ -143,13 +143,11 @@ TAB_BG=net/java/sip/communicator/impl/gui/resources/common/notebook2.png SELECTED_CLOSABLE_TAB_BG=net/java/sip/communicator/impl/gui/resources/common/closableTabSelected.png CLOSABLE_TAB_BG=net/java/sip/communicator/impl/gui/resources/common/closableTab.png -BUTTON_LEFT=net/java/sip/communicator/impl/gui/resources/lookandfeel/buttonBGLeft.png -BUTTON_MIDDLE=net/java/sip/communicator/impl/gui/resources/lookandfeel/buttonBGMiddle.png -BUTTON_RIGHT=net/java/sip/communicator/impl/gui/resources/lookandfeel/buttonBGRight.png - -BUTTON_ROLLOVER_LEFT=net/java/sip/communicator/impl/gui/resources/lookandfeel/buttonRolloverBgLeft.png -BUTTON_ROLLOVER_MIDDLE=net/java/sip/communicator/impl/gui/resources/lookandfeel/buttonRolloverBgMiddle.png -BUTTON_ROLLOVER_RIGHT=net/java/sip/communicator/impl/gui/resources/lookandfeel/buttonRolloverBgRight.png +BUTTON=net/java/sip/communicator/impl/gui/resources/lookandfeel/button1.png +BUTTON_ROLLOVER=net/java/sip/communicator/impl/gui/resources/lookandfeel/button2.png SPLITPANE_HORIZONTAL=net/java/sip/communicator/impl/gui/resources/lookandfeel/splitpaneHorizontal.png -SPLITPANE_VERTICAL=net/java/sip/communicator/impl/gui/resources/lookandfeel/splitpaneVertical.png \ No newline at end of file +SPLITPANE_VERTICAL=net/java/sip/communicator/impl/gui/resources/lookandfeel/splitpaneVertical.png + +SCROLLBAR_HORIZONTAL=net/java/sip/communicator/impl/gui/resources/lookandfeel/scrollbar_horiz2.png +SCROLLBAR_VERTICAL=net/java/sip/communicator/impl/gui/resources/lookandfeel/scrollbar_vert1.png \ No newline at end of file