/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.impl.gui.lookandfeel; import java.awt.*; import javax.swing.border.*; import javax.swing.plaf.*; import javax.swing.plaf.basic.*; import javax.swing.text.*; /** * SIPCommBorders is where all component borders used in the SIPComm L&F are * drawn. * * @author Yana Stamcheva */ public class SIPCommBorders { /** * The RoundBorder is common border which is used throughout the SIPComm * L&F. */ public static class RoundBorder extends AbstractBorder implements UIResource { private static final long serialVersionUID = 0L; private static final Insets insets = new Insets(2, 2, 2, 2); @Override public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) { if (c.isEnabled()) { SIPCommLFUtils.drawRoundBorder(g, x, y, w, h, 5, 5); } else { SIPCommLFUtils.drawRoundDisabledBorder(g, x, y, w, h, 5, 5); } } @Override public Insets getBorderInsets(Component c) { return insets; } @Override 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; } } private static Border roundBorder; public static Border getRoundBorder() { if (roundBorder == null || !(roundBorder instanceof SIPCommBorders.RoundBorder)) { roundBorder = new BorderUIResource.CompoundBorderUIResource( new SIPCommBorders.RoundBorder(), new BasicBorders.MarginBorder()); } return roundBorder; } /** * The BoldRoundBorder is common border which is used throughout the SIPComm * L&F. */ public static class BoldRoundBorder extends AbstractBorder implements UIResource { private static final long serialVersionUID = 0L; private static final Insets insets = new Insets(2, 2, 2, 2); @Override public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) { SIPCommLFUtils.drawBoldRoundBorder(g, x, y, w, h, 8, 8); } @Override public Insets getBorderInsets(Component c) { return insets; } @Override 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; } } private static Border boldRoundBorder; public static Border getBoldRoundBorder() { if (boldRoundBorder == null || !(boldRoundBorder instanceof SIPCommBorders.BoldRoundBorder)) { boldRoundBorder = new BorderUIResource.CompoundBorderUIResource( new SIPCommBorders.BoldRoundBorder(), new BasicBorders.MarginBorder()); } return boldRoundBorder; } private static Border textFieldBorder; /** * Returns a border instance for a JTextField. */ public static Border getTextFieldBorder() { if (textFieldBorder == null || !(textFieldBorder instanceof SIPCommBorders.TextFieldBorder)) { textFieldBorder = new BorderUIResource.CompoundBorderUIResource( new SIPCommBorders.TextFieldBorder(), new BasicBorders.MarginBorder()); } return textFieldBorder; } /** * The TextField border which is used in SIPComm L&F for all text fields. */ public static class TextFieldBorder extends RoundBorder { private static final long serialVersionUID = 0L; @Override public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) { if (!(c instanceof JTextComponent)) { if (c.isEnabled()) { SIPCommLFUtils.drawRoundBorder(g, x, y, w, h, 7, 7); } else { SIPCommLFUtils.drawRoundDisabledBorder(g, x, y, w, h, 7, 7); } return; } if (c.isEnabled() && ((JTextComponent) c).isEditable()) { SIPCommLFUtils.drawRoundBorder(g, x, y, w, h, 7, 7); } else { SIPCommLFUtils.drawRoundDisabledBorder(g, x, y, w, h, 7, 7); } } } }