From ddf67e80ddc4c7c5176a0de9d77b44d31b60b337 Mon Sep 17 00:00:00 2001 From: Yana Stamcheva Date: Thu, 11 May 2006 16:21:44 +0000 Subject: [PATCH] textfield and combobox antialiasing through look&feel. --- .../impl/gui/lookandfeel/SIPCommBorders.java | 52 +++++++++++++++++++ .../gui/lookandfeel/SIPCommComboBoxUI.java | 20 ++++++- .../gui/lookandfeel/SIPCommDefaultTheme.java | 9 +++- .../gui/lookandfeel/SIPCommLookAndFeel.java | 5 +- .../gui/lookandfeel/SIPCommTextFieldUI.java | 36 +++++++++++++ .../customcontrols/SIPCommPasswordField.java | 46 ---------------- .../main/customcontrols/SIPCommTextField.java | 48 ----------------- .../impl/gui/main/login/LoginWindow.java | 8 +-- 8 files changed, 123 insertions(+), 101 deletions(-) create mode 100644 src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommTextFieldUI.java delete mode 100644 src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommPasswordField.java delete mode 100644 src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommTextField.java diff --git a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommBorders.java b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommBorders.java index eb8847435..35e22d485 100644 --- a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommBorders.java +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommBorders.java @@ -1,6 +1,58 @@ package net.java.sip.communicator.impl.gui.lookandfeel; +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Insets; + +import javax.swing.border.AbstractBorder; +import javax.swing.border.Border; +import javax.swing.plaf.BorderUIResource; +import javax.swing.plaf.UIResource; +import javax.swing.plaf.basic.BasicBorders; +import javax.swing.text.JTextComponent; + public class SIPCommBorders { + private static Border textFieldBorder; + + /** + * Returns a border instance for a JTextField. + */ + public static Border getTextFieldBorder() { + if (textFieldBorder == null + || !(textFieldBorder instanceof SIPCommBorders.TextFieldBorder)) { + textFieldBorder = new SIPCommBorders.TextFieldBorder(); + } + return textFieldBorder; + } + + public static class TextFieldBorder extends AbstractBorder implements UIResource{ + + private static final Insets insets = new Insets(2, 2, 2, 2); + + public void paintBorder(Component c, Graphics g, int x, int y, + int w, int h) { + g.setColor(Color.GRAY); + if (c.isEnabled()) { + g.drawRoundRect(x, y, w, h, 5, 5); + } else { + g.drawRoundRect(x, y, w, h, 5, 5); + } + } + + public Insets getBorderInsets(Component c) { + return insets; + } + + public Insets getBorderInsets(Component c, Insets newInsets) { + newInsets.top = insets.top; + newInsets.left = insets.left; + newInsets.bottom = insets.bottom; + newInsets.right = insets.right; + + return newInsets; + } + } } diff --git a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommComboBoxUI.java b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommComboBoxUI.java index e7bbf8650..78560cb02 100644 --- a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommComboBoxUI.java +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommComboBoxUI.java @@ -6,7 +6,17 @@ */ package net.java.sip.communicator.impl.gui.lookandfeel; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Rectangle; +import java.awt.RenderingHints; + +import javax.swing.JComponent; +import javax.swing.plaf.ComponentUI; import javax.swing.plaf.metal.MetalComboBoxUI; +import javax.swing.plaf.metal.MetalLookAndFeel; + +import net.java.sip.communicator.impl.gui.utils.AntialiasingManager; /** * SIPCommComboBoxUI implementation. @@ -14,5 +24,13 @@ * @author Yana Stamcheva */ public class SIPCommComboBoxUI extends MetalComboBoxUI { - + + public static ComponentUI createUI(JComponent c) { + return new SIPCommComboBoxUI(); + } + + public void paint(Graphics g, JComponent c) { + AntialiasingManager.activateAntialiasing(g); + super.paint(g, c); + } } 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 42f840468..1c60586fd 100644 --- a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommDefaultTheme.java +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommDefaultTheme.java @@ -14,8 +14,11 @@ import javax.swing.UIDefaults; import javax.swing.plaf.ColorUIResource; import javax.swing.plaf.FontUIResource; +import javax.swing.plaf.UIResource; import javax.swing.plaf.metal.DefaultMetalTheme; +import sun.swing.SwingLazyValue; + import net.java.sip.communicator.impl.gui.utils.Constants; import net.java.sip.communicator.impl.gui.utils.ImageLoader; @@ -66,6 +69,8 @@ public void addCustomEntriesToTable(UIDefaults table) { new Float(.3f), new Float(.2f), DARK_BLUE, getWhite(), new ColorUIResource(LIGHT_BLUE_GRAY) }); + Object textFieldBorder = SIPCommBorders.getTextFieldBorder(); + Object[] defaults = new Object[] { "Button.rollover", Boolean.TRUE, @@ -97,7 +102,7 @@ public void addCustomEntriesToTable(UIDefaults table) { "ScrollBar.width", new Integer(12), "ScrollBar.horizontalThumbIcon", ImageLoader.getImage(ImageLoader.SCROLLBAR_THUMB_HORIZONTAL), - "ScrollBar.verticalThumbIcon", + "ScrollBar.verticalThumbIcon", ImageLoader.getImage(ImageLoader.SCROLLBAR_THUMB_VERTICAL), "ScrollBar.horizontalThumbHandleIcon", ImageLoader.getImage(ImageLoader.SCROLLBAR_THUMB_HANDLE_HORIZONTAL), @@ -113,6 +118,8 @@ public void addCustomEntriesToTable(UIDefaults table) { "TabbedPane.tabAreaInsets", new Insets(2, 2, 0, 6), "TabbedPane.unselectedBackground", LIGHT_GRAY, + "TextField.border", textFieldBorder, + "Table.gridColor", LIGHT_BLUE_GRAY, "ToggleButton.gradient", buttonGradient, 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 c0fd0ed5a..5e47d8c91 100644 --- a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommLookAndFeel.java +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommLookAndFeel.java @@ -7,6 +7,7 @@ package net.java.sip.communicator.impl.gui.lookandfeel; import javax.swing.UIDefaults; +import javax.swing.UIManager; import javax.swing.plaf.metal.MetalLookAndFeel; /** @@ -45,7 +46,9 @@ protected void initClassDefaults(UIDefaults table) { Object[] uiDefaults = { "ButtonUI", lfPackageName + "SIPCommButtonUI", "SplitPaneUI", lfPackageName + "SIPCommSplitPaneUI", - "ScrollBarUI", lfPackageName + "SIPCommScrollBarUI" + "ScrollBarUI", lfPackageName + "SIPCommScrollBarUI", + "ComboBoxUI", lfPackageName + "SIPCommComboBoxUI", + "TextFieldUI", lfPackageName + "SIPCommTextFieldUI" }; table.putDefaults(uiDefaults); } diff --git a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommTextFieldUI.java b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommTextFieldUI.java new file mode 100644 index 000000000..74b91edfb --- /dev/null +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommTextFieldUI.java @@ -0,0 +1,36 @@ +/* + * 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.Graphics2D; +import java.awt.Rectangle; +import java.awt.RenderingHints; +import java.awt.Shape; + +import javax.swing.JComponent; +import javax.swing.plaf.ComponentUI; +import javax.swing.plaf.metal.MetalTextFieldUI; + +import net.java.sip.communicator.impl.gui.utils.AntialiasingManager; + +/** + * SIPCommTextFieldUI implementation. + * + * @author Yana Stamcheva + */ +public class SIPCommTextFieldUI extends MetalTextFieldUI { + + public static ComponentUI createUI(JComponent c) { + return new SIPCommTextFieldUI(); + } + + protected void paintSafely(Graphics g) { + AntialiasingManager.activateAntialiasing(g); + super.paintSafely(g); + } +} diff --git a/src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommPasswordField.java b/src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommPasswordField.java deleted file mode 100644 index 2a27d1bc0..000000000 --- a/src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommPasswordField.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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.main.customcontrols; - -import java.awt.BasicStroke; -import java.awt.Graphics; -import java.awt.Graphics2D; - -import javax.swing.JPasswordField; - -import net.java.sip.communicator.impl.gui.utils.AntialiasingManager; -import net.java.sip.communicator.impl.gui.utils.Constants; - -public class SIPCommPasswordField extends JPasswordField { - - public SIPCommPasswordField(){ - super(); - } - - public SIPCommPasswordField(int columns){ - super(columns); - } - - protected void paintBorder(Graphics g){ - - Graphics2D g2 = (Graphics2D)g; - - g2.setColor(Constants.TOOLBAR_SEPARATOR_COLOR); - - g2.setStroke(new BasicStroke(3.0f)); - - g2.drawRoundRect(0, 0, this.getWidth() - 1, this.getHeight() - 1, 7, 7); - } - - protected void paintComponent(Graphics g){ - - AntialiasingManager.activateAntialiasing(g); - - super.paintComponent(g); - } -} diff --git a/src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommTextField.java b/src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommTextField.java deleted file mode 100644 index 94cc4aeb9..000000000 --- a/src/net/java/sip/communicator/impl/gui/main/customcontrols/SIPCommTextField.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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.main.customcontrols; - -import java.awt.BasicStroke; -import java.awt.Graphics; -import java.awt.Graphics2D; - -import javax.swing.JTextField; - -import net.java.sip.communicator.impl.gui.utils.AntialiasingManager; -import net.java.sip.communicator.impl.gui.utils.Constants; - -public class SIPCommTextField extends JTextField { - - public SIPCommTextField(){ - - super(); - } - - public SIPCommTextField(int columns){ - - super(columns); - } - - protected void paintBorder(Graphics g){ - - Graphics2D g2 = (Graphics2D)g; - - g2.setColor(Constants.TOOLBAR_SEPARATOR_COLOR); - - g2.setStroke(new BasicStroke(3.0f)); - - g2.drawRoundRect(0, 0, this.getWidth() - 1, this.getHeight() - 1, 7, 7); - } - - protected void paintComponent(Graphics g){ - - AntialiasingManager.activateAntialiasing(g); - - super.paintComponent(g); - } -} diff --git a/src/net/java/sip/communicator/impl/gui/main/login/LoginWindow.java b/src/net/java/sip/communicator/impl/gui/main/login/LoginWindow.java index a608fcb5c..a2498c65f 100644 --- a/src/net/java/sip/communicator/impl/gui/main/login/LoginWindow.java +++ b/src/net/java/sip/communicator/impl/gui/main/login/LoginWindow.java @@ -27,11 +27,12 @@ import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JPasswordField; +import javax.swing.JTextField; import javax.swing.KeyStroke; import net.java.sip.communicator.impl.gui.main.MainFrame; import net.java.sip.communicator.impl.gui.main.customcontrols.RolloverButton; -import net.java.sip.communicator.impl.gui.main.customcontrols.SIPCommPasswordField; import net.java.sip.communicator.impl.gui.main.i18n.Messages; import net.java.sip.communicator.impl.gui.utils.AntialiasingManager; import net.java.sip.communicator.impl.gui.utils.ImageLoader; @@ -46,7 +47,7 @@ public class LoginWindow extends JDialog private JComboBox uinComboBox; - private SIPCommPasswordField passwdField = new SIPCommPasswordField(15); + private JPasswordField passwdField = new JPasswordField(15); private JButton loginButton = new JButton(Messages.getString("login")); @@ -101,7 +102,6 @@ private void init() { this.uinComboBox = new JComboBox(); - this.passwdField.setEchoChar('*'); this.uinComboBox.setEditable(true); this.labelsPanel.add(uinLabel); @@ -172,7 +172,7 @@ public void actionPerformed(ActionEvent e) { this.loginManager.login(accountManager, uinComboBox.getSelectedItem().toString(), - new String(passwdField.getPassword())); + /*new String(passwdField.getPassword())*/""); } else{ this.dispose();