Package goitaca.utils

Source Code of goitaca.utils.SwingUtils

package goitaca.utils;

import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;

import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
import javax.swing.TransferHandler;
import javax.swing.event.MouseInputAdapter;

public class SwingUtils
{
    public static GridBagConstraints gbc = new GridBagConstraints();
   
    public static void addGridBagComponent(Container container,
        Component component, int gridx, int gridy, int gridwidth,
        int gridheight, int anchor, int fill, double weightx,
        double weighty, Insets insets)
    {
        gbc.gridx = gridx;
        gbc.gridy = gridy;
        gbc.gridwidth = gridwidth;
        gbc.gridheight = gridheight;
        gbc.anchor = anchor;
        gbc.fill = fill;
        gbc.weightx = weightx;
        gbc.weighty = weighty;
        if (insets != null)
            gbc.insets = insets;
        container.add(component, gbc);
    }

    /* sem insets e sem weight */
    public static void addGridBagComponent(Container container,
        Component component, int gridx, int gridy, int gridwidth,
        int gridheight, int anchor, int fill)
    {
        addGridBagComponent(container, component, gridx, gridy, gridwidth,
            gridheight, anchor, fill, 0, 0, null);
    }
   
    /* sem insets */
    public static void addGridBagComponent(Container container,
        Component component, int gridx, int gridy, int gridwidth,
        int gridheight, int anchor, int fill, double weightx, double weighty)
    {
        addGridBagComponent(container, component, gridx, gridy, gridwidth,
            gridheight, anchor, fill, weightx, weighty, null);
    }
   
    /* sem weight */
    public static void addGridBagComponent(Container container,
        Component component, int gridx, int gridy, int gridwidth,
        int gridheight, int anchor, int fill, Insets insets)
    {
        addGridBagComponent(container, component, gridx, gridy, gridwidth,
            gridheight, anchor, fill, 0, 0, insets);
    }
   
    public static void addGridBagLabelTextField(Container container,
        Component label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight, int fill,
        double weightx, double weighty, Insets insets)
    {
      if (label instanceof JLabel)
        ((JLabel) label).setLabelFor(textField);
     
      gbc.gridx = gridx;
        gbc.gridy = gridy;
        gbc.gridwidth = labelWidth;
        gbc.gridheight = gridHeight;
        gbc.anchor = GridBagConstraints.EAST;
        gbc.fill = GridBagConstraints.NONE;
        gbc.weightx = 0;
        gbc.weighty = 0;
        if (insets != null)
            gbc.insets = new Insets(insets.top, insets.left, insets.bottom, 3);
        container.add(label, gbc);

        gbc.gridx += labelWidth;
        gbc.gridwidth = textFieldWidth;
        gbc.anchor = GridBagConstraints.WEST;
        gbc.fill = fill;
        gbc.weightx = weightx;
        gbc.weighty = weighty;
        if (insets != null)
            gbc.insets = insets;
        container.add(textField, gbc);
    }
   
    public static void addGridBagLabelTextField(Container container,
        Component label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight, int fill,
        double weightx, double weighty)
    {
      addGridBagLabelTextField(container, label, textField, gridx, gridy, labelWidth,
      textFieldWidth, gridHeight, fill, weightx, weighty, null);
    }

    // Label como string
    public static void addGridBagLabelTextField(Container container,
        String label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight, int fill,
        double weightx, double weighty)
    {
        addGridBagLabelTextField(container, new JLabel(label), textField, gridx,
                gridy, labelWidth, textFieldWidth, gridHeight, fill, weightx, weighty);
    }
   
    /* sem weight, sem fill e sem insets */
    public static void addGridBagLabelTextField(Container container,
        Component label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight)
    {
        addGridBagLabelTextField(container, label, textField, gridx, gridy,
            labelWidth, textFieldWidth, gridHeight, GridBagConstraints.NONE,
            0, 0, null);
    }

    // Label como string
    public static void addGridBagLabelTextField(Container container,
        String label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight)
    {
        addGridBagLabelTextField(container, new JLabel(label), textField, gridx,
                gridy, labelWidth, textFieldWidth, gridHeight);
    }
   
    /* sem weight e sem fill */
    public static void addGridBagLabelTextField(Container container,
        Component label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight, Insets insets)
    {
      addGridBagLabelTextField(container, label, textField, gridx, gridy,
      labelWidth, textFieldWidth, gridHeight, GridBagConstraints.NONE,
      0, 0, insets);
    }
   
    // Label como string
    public static void addGridBagLabelTextField(Container container,
        String label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight, Insets insets)
    {
        addGridBagLabelTextField(container, new JLabel(label), textField, gridx,
            gridy, labelWidth, textFieldWidth, gridHeight, insets);
    }

    /* sem fill */
    public static void addGridBagLabelTextField(Container container,
        Component label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight,
        double weightx, double weighty, Insets insets)
    {
      addGridBagLabelTextField(container, label, textField, gridx, gridy,
      labelWidth, textFieldWidth, gridHeight, GridBagConstraints.NONE,
      weightx, weighty, insets);
    }
   
    // Label como string
    public static void addGridBagLabelTextField(Container container,
        String label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight,
        double weightx, double weighty, Insets insets)
    {
        addGridBagLabelTextField(container, new JLabel(label), textField, gridx,
                gridy, labelWidth, textFieldWidth, gridHeight, weightx, weighty, insets);
    }

    /* sem weight */
    public static void addGridBagLabelTextField(Container container,
        Component label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight, int fill,
        Insets insets)
    {
      addGridBagLabelTextField(container, label, textField, gridx, gridy, labelWidth,
      textFieldWidth, gridHeight, fill, 0, 0, insets);
    }

    // Label como string
    public static void addGridBagLabelTextField(Container container,
        String label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight, int fill,
        Insets insets)
    {
        addGridBagLabelTextField(container, new JLabel(label), textField,
            gridx, gridy, labelWidth, textFieldWidth, gridHeight, fill, insets);
    }

   
    /* sem fill e sem weight */
    public static void addGridBagLabelTextField(Container container,
        Component label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight, int fill)
    {
        addGridBagLabelTextField(container, label, textField, gridx, gridy,
            labelWidth, textFieldWidth, gridHeight, fill, 0, 0, null);
    }

    // Label como string
    public static void addGridBagLabelTextField(Container container,
        String label, Component textField, int gridx, int gridy,
        int labelWidth, int textFieldWidth, int gridHeight, int fill)
    {
        addGridBagLabelTextField(container, new JLabel(label), textField, gridx,
            gridy, labelWidth, textFieldWidth, gridHeight, fill);       
    }

    public static Point centerLocation(Component component)
    {
        return new Point((int) Math.round(Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 -
        component.getWidth() / 2), (int) Math.round(
      Toolkit.getDefaultToolkit().getScreenSize().getHeight()/ 2 -
      component.getHeight() / 2));
    }

    /**
     * Retorna um JScrollPane para um dado componente
     *
     * @param component
     *            o componente a ser "scrollado"
     * @param height
     *            permite especificar o tamanho para evitar o colapso da tela
     *            (talvez um bug do Swing)
     * @return o scroll pane gerado
     */
    public static JScrollPane scrollComponent(Component component, int height, String title)
    {
      JScrollPane scroll = new JScrollPane(component,
            ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
      scroll.setPreferredSize(new Dimension(scroll.getPreferredSize().width,
              height != -1 ? height : scroll.getPreferredSize().height));
     
      if (title != null)
        scroll.setBorder(BorderFactory.createTitledBorder(title));
     
      return scroll;
    }
   
    
    
    public static JScrollPane scrollComponent(Component component, int height)
    {
        return scrollComponent(component, height, null);
    }

    public static JScrollPane scrollComponent(Component component, int width,
            int height)
    {
        JScrollPane scroll = new JScrollPane(component,
                ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scroll.setPreferredSize(new Dimension(width != -1 ? width : scroll
                .getPreferredSize().width, height != -1 ? height : scroll
                .getPreferredSize().height));
        return scroll;
    }

    public static JComponent borderComponent(JComponent component, String title)
    {
        component.setBorder(BorderFactory.createTitledBorder(title));
        return component;
    }

    /* JOptionPane YesNo */
    public static int yesNoPane(String title, String message)
    {
        return yesNoPane(title, message, 0);
    }

    public static int yesNoPane(String title, String message,
            Integer botaoDefault)
    {
        Object[] options = { "Sim", "N�o" };

        int retorno = JOptionPane.showOptionDialog(null, message, title,
            JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
            options, options[botaoDefault]);

        return retorno;
    }

    public static int yesNoCancelPane(String title, String message)
    {
        return yesNoCancelPane(title, message, 0);
    }

    public static int yesNoCancelPane(String title, String message,
            Integer botaoDefault)
    {
        Object[] options = { "Sim", "N�o", "Cancela" };

        int retorno = JOptionPane.showOptionDialog(null, message, title,
                JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,
                null, options, options[botaoDefault]);

        return retorno;
    }
   
    public static int yesNoPane(String title, String message,
            Integer botaoDefault, Object... options)
    {
        int retorno = JOptionPane.showOptionDialog(null, message, title,
            JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
            options, options[botaoDefault]);

        return retorno;
    }

    public static Icon adjustSize(ImageIcon icon, double scale)
    {
        int width = (int) Math.round(icon.getIconWidth() * scale);
        int height = (int) Math.round(icon.getIconHeight() * scale);
        Image image = icon.getImage();
        image = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
        icon.setImage(image);
        return icon;
    }

    public static Icon fitIcon(ImageIcon icon, int maxWidth, int maxHeight)
    {
        int imgw = icon.getIconWidth(), imgh = icon.getIconHeight();
        int finalw, finalh;
        if (imgw > imgh)
        {
            finalw = maxWidth;
            finalh = finalw * imgh / imgw;
        }
        else
        {
            finalh = maxHeight;
            finalw = finalh * imgw / imgh;
        }

        return adjustSize(icon, ((double) finalw) / imgw);
    }
   
    public static void testComponentDialog(Component component)
    {
      testComponentDialog(component, true);
    }
   
    public static void testComponentDialog(Component component, boolean exit)
    {
      JDialog dialog = new JDialog();
      dialog.setModal(true);
      dialog.getContentPane().add(component);
      dialog.pack();
      dialog.setVisible(true);
      if (exit)
        System.exit(0);
    }
   
    public static JTextArea createTablessTextArea(int rows, int cols)
    {
        JTextArea textarea = new JTextArea(rows, cols);
        return create(textarea);
    }
   
    public static JTextArea createTablessTextArea()
    {
        JTextArea textarea = new JTextArea();
        return create(textarea);
    }
   
    private static JTextArea create(JTextArea area)
    {
      area.addKeyListener(
            new KeyAdapter()
            {
                public void keyPressed(KeyEvent e)
                {
                    if (e.getKeyCode() == KeyEvent.VK_TAB)
                        ((Component)e.getSource()).transferFocus();
                    else if (e.getKeyCode() == KeyEvent.VK_TAB && (e.getModifiersEx() & KeyEvent.SHIFT_DOWN_MASK) != 0)
                      ((Component) e.getSource()).transferFocusBackward();
                }
            }
        );
           
        return area;
    }
   
    public static void installDragAndDrop(final JComponent component,
      final TransferHandler handler, final int transferType)
    {
      try
      {
        ReflectionUtils.invokeMethod("setDragEnabled", component,
        new Class[] {boolean.class}, new Object[] {true});
      }
      catch (IllegalArgumentException e)
      {
        throw e;
      }
     
      ReflectionUtils.invokeMethod("setTransferHandler", component,
        new Class[] { TransferHandler.class }, new Object[] { handler });
     
      MouseInputAdapter starter = new MouseInputAdapter()
      {
        @Override
          public void mousePressed(MouseEvent e)
          {
            TransferHandler handler = (TransferHandler)
              ReflectionUtils.invokeMethod("getTransferHandler", component,
              new Class[] {}, new Object[] {});
            handler.exportAsDrag(component, e, transferType);
           
          }
      };
     
      component.addMouseListener(starter);
      component.addMouseMotionListener(starter);
    }
   
    public static void centralize(Component component)
    {
        component.setLocation(
        Toolkit.getDefaultToolkit().getScreenSize().width / 2 -
        component.getWidth() / 2, Toolkit.getDefaultToolkit().getScreenSize().height / 2 -
      component.getHeight() / 2);
    }
   
}
TOP

Related Classes of goitaca.utils.SwingUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.