Save This Page
Home » openjdk-7 » net.jbeans.bean.property » editor » [javadoc | source]
    1   /* -------------------------------------------------------------------
    2    * Java source file for the class BorderEditor
    3    * 
    4    * Copyright (c), 2002, Masahiro Takatsuka.
    5    * All Rights Researved.
    6    * 
    7    * Original Author: Masahiro Takatsuka (masa@jbeans.net)
    8    * $Author: takatsukam $
    9    * 
   10    * $Date: 2003/07/25 04:51:45 $
   11    * 
   12    * $Id: BorderEditor.java,v 1.1.1.1 2003/07/25 04:51:45 takatsukam Exp $
   13    * 
   14    * Reference:		Document no:
   15    * ___				___
   16    * 
   17    * To Do:
   18    * ___
   19    * 
   20   ------------------------------------------------------------------- */
   21   
   22   /* --------------------------- Package ---------------------------- */
   23   package net.jbeans.bean.property.editor;
   24   
   25   /* ------------------ Import classes (packages) ------------------- */
   26   import java.awt;
   27   import java.awt.event;
   28   import javax.swing;
   29   import javax.swing.border;
   30   
   31   import net.jbeans.ui;
   32   
   33   /*====================================================================
   34                    Implementation of class BorderEditor                 
   35   ====================================================================*/
   36   /**
   37    * generally describe BorderEditor in here
   38    * 
   39    * @version $Revision: 1.1.1.1 $
   40    * @author Masahiro Takatsuka (masa@jbeans.net)
   41    * @see EditorSupport
   42    */
   43   
   44   public final class BorderEditor extends EditorSupport {
   45   	private JComboBox borderCombo;
   46   	private JButton borderButton;
   47   	private BorderDialog borderDialog;
   48   
   49   	private Border empty = BorderFactory.createEmptyBorder();
   50   	private Border etched = BorderFactory.createEtchedBorder();	
   51   	private Border bevelLowered = BorderFactory.createLoweredBevelBorder();
   52   	private Border bevelRaised =BorderFactory.createRaisedBevelBorder();
   53   	private Border line = BorderFactory.createLineBorder(Color.black);
   54   	private Border[] borders = {this.empty,
   55   								 this.etched,
   56   								 this.bevelLowered,
   57   								 this.bevelRaised,
   58   								 this.line};
   59   	private Border border;
   60   
   61   	public BorderEditor(){
   62   		JPanel panel = new JPanel();
   63   		panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
   64   		panel.setAlignmentX(Component.LEFT_ALIGNMENT);
   65   		UIDefaults table = UIManager.getDefaults();
   66   		table.put("bean.editor.BorderIcon", LookAndFeel.makeIcon(getClass(), "resources/BorderIcon.gif"));
   67           table.put("bean.editor.BorderBevelLowered", LookAndFeel.makeIcon(getClass(), "resources/BorderBevelLowered.gif"));
   68           table.put("bean.editor.BorderBevelRaised", LookAndFeel.makeIcon(getClass(), "resources/BorderBevelRaised.gif"));
   69           table.put("bean.editor.BorderEtched", LookAndFeel.makeIcon(getClass(), "resources/BorderEtched.gif"));
   70           table.put("bean.editor.BorderLine", LookAndFeel.makeIcon(getClass(), "resources/BorderLine.gif"));
   71   
   72           this.borderCombo = createComboBox();
   73   
   74   		// need rigid area match up
   75   		Icon buttonIcon = UIManager.getIcon("bean.editor.BorderIcon");
   76   		this.borderButton = new JButton(buttonIcon);
   77   		Dimension d = new Dimension(buttonIcon.getIconWidth(), buttonIcon.getIconHeight());
   78   		this.borderButton.setPreferredSize(d);
   79   		this.borderButton.setMinimumSize(d);
   80   		this.borderButton.setMaximumSize(d);    
   81   		this.borderButton.addActionListener(new ActionListener(){
   82   				public void actionPerformed(ActionEvent e){
   83   					if (BorderEditor.this.borderDialog == null)
   84   						BorderEditor.this.borderDialog = new BorderDialog(getPanel().getParent(), "Border Chooser");
   85   					BorderEditor.this.border = BorderEditor.this.borderDialog.showDialog();
   86   					if (!(BorderEditor.this.borderDialog.isCancelled()))
   87   						setValue(BorderEditor.this.border);
   88   				}
   89   			});
   90   		setAlignment(this.borderCombo);
   91   		setAlignment(this.borderButton);
   92   		panel.add(this.borderCombo);
   93   		panel.add(Box.createRigidArea(new Dimension(5,0)));
   94   		panel.add(this.borderButton);
   95   		panel.add(Box.createHorizontalGlue());
   96   		setPanel(panel);
   97   	}
   98   
   99   	public final void setValue(Object value){
  100   		super.setValue(value);
  101   		// update our GUI state
  102   		// set ComboBox to any equal border value
  103   		// set BorderChooser - setSelectedBorder to any equal value as well
  104   	}
  105     
  106   	private JComboBox createComboBox(){
  107   		DefaultComboBoxModel model = new DefaultComboBoxModel();
  108   		for (int i = 0; i < 5; i++){
  109   			model.addElement(new Integer(i));
  110   		}
  111             
  112   		JComboBox c = new JComboBox(model); // borders);
  113   		c.setRenderer(new BorderCellRenderer(c));
  114   		c.setPreferredSize(EditorSupport.MEDIUM_DIMENSION); // new Dimension(120,20));
  115   		c.setMinimumSize(EditorSupport.MEDIUM_DIMENSION);
  116   		c.setMaximumSize(EditorSupport.MEDIUM_DIMENSION);
  117   		c.setSelectedIndex(-1);
  118   		c.addActionListener(new ActionListener(){
  119   				public final void actionPerformed(ActionEvent e){
  120   					JComboBox cb = (JComboBox)e.getSource();
  121   					BorderEditor.this.border = BorderEditor.this.borders[cb.getSelectedIndex()];
  122   					setValue(BorderEditor.this.border);
  123   				}
  124   			}); 
  125   		return c;
  126   	}
  127   
  128       public final String getJavaInitializationString() {
  129   
  130         	Border border = (Border) getValue();
  131   		
  132   //          return "javax.swing.BorderFactory(new javax.awt.Font(\"" + font.getFamily() + "\", " +
  133   //          font.getStyle() + ", " + font.getSize() + ")";
  134   
  135   		return null;		
  136       }
  137   	
  138   	class BorderCellRenderer extends JLabel implements ListCellRenderer   {
  139   		JComboBox _combobox;
  140   		Icon[] _images = {
  141   			null,
  142   			UIManager.getIcon("bean.editor.BorderEtched"),                  
  143   			UIManager.getIcon("bean.editor.BorderBevelLowered"),
  144   			UIManager.getIcon("bean.editor.BorderBevelRaised"),
  145   			UIManager.getIcon("bean.editor.BorderLine") };
  146   
  147   		String[] _desc = {
  148   			"Empty",
  149   			"Etched",
  150   			"BevelLowered",
  151   			"BevelRaised",
  152   			"Line" };
  153             
  154   		BorderCellRenderer(JComboBox x) {
  155   			_combobox = x;
  156   			setOpaque(true);
  157   		}
  158   
  159   		public final Component getListCellRendererComponent(JList list,
  160   													  Object value,
  161   													  int modelIndex,
  162   													  boolean isSelected,
  163   													  boolean cellHasFocus) {
  164   			if (value == null) {
  165   				setText("");
  166   				setIcon(null);
  167   			} else {
  168   				int index = ((Integer)value).intValue();
  169   				if (index < 0){
  170   					setText("");
  171   					setIcon(null);
  172   				} else {
  173   					String text = " " + _desc[index];
  174   					setIcon(_images[index]);                          
  175   					setText(text);
  176   					if (isSelected){
  177   						setBackground(UIManager.getColor("ComboBox.selectionBackground"));
  178   						setForeground(UIManager.getColor("ComboBox.selectionForeground"));
  179   					} else {
  180   						setBackground(UIManager.getColor("ComboBox.background"));
  181   						setForeground(UIManager.getColor("ComboBox.foreground"));
  182   					}
  183   				}
  184   			}
  185   			return this;
  186   		}
  187   	}
  188   
  189   	public final void editorChangeValue(Object value){
  190   	} 
  191   
  192   	final class BorderDialog extends JDialog {
  193   		JPanel pane;
  194   		JButton okButton;
  195   		BorderChooser borderChooser;
  196   		Border border = null;
  197   		boolean cancel = false;
  198   		
  199   		public BorderDialog(Component c, String title){
  200   			super(JOptionPane.getFrameForComponent(c), title, true);
  201   			Container contentPane = getContentPane();
  202   			this.pane = new JPanel();
  203   			this.pane.setLayout(new BorderLayout());
  204   			contentPane.setLayout(new BorderLayout());
  205   			this.okButton = new JButton("OK"); // new BorderTracker(_pane);
  206   			ActionListener okListener = new ActionListener(){
  207   					public final void actionPerformed(ActionEvent e){
  208   						// get the Border from the pane
  209   						BorderDialog.this.border = getBorder();
  210   					}
  211   				};
  212   
  213   			getRootPane().setDefaultButton(this.okButton);
  214   			this.okButton.setActionCommand("OK");
  215   			if (okListener != null) {
  216   				this.okButton.addActionListener(okListener);
  217   			}
  218   			this.okButton.addActionListener(new ActionListener() {
  219   					public final void actionPerformed(ActionEvent e) {
  220   						hide();
  221   					}
  222   				});
  223   			JButton cancelButton = new JButton("Cancel");
  224   			cancelButton.setActionCommand("cancel");
  225   			cancelButton.addActionListener(new ActionListener() {
  226   					public final void actionPerformed(ActionEvent e) {
  227   						BorderDialog.this.cancel = true;
  228   						hide();
  229   					}
  230   				});
  231   			// borderlayout
  232   			addBorderChooser(this.pane);
  233   			JPanel buttonPanel = new JPanel();
  234   			buttonPanel.add(cancelButton);
  235   			buttonPanel.add(this.okButton);			
  236   			this.pane.add(buttonPanel, BorderLayout.SOUTH);
  237   			contentPane.add(this.pane, BorderLayout.CENTER);
  238   			pack();
  239   			this.addWindowListener(new Closer());
  240   			this.addComponentListener(new DisposeOnClose());
  241   		}
  242   
  243   		public final void addBorderChooser(JPanel panel){
  244   			this.borderChooser = new BorderChooser();
  245   			panel.add(this.borderChooser, BorderLayout.CENTER);
  246   		}
  247   
  248   		public final void setBorder(){ // called from pane
  249   		}
  250   
  251   		public final Border getBorder(){
  252   			return this.borderChooser.getSelectedBorder();
  253   			//      return this.border;
  254   		}
  255   
  256   		public final Border showDialog(){
  257   			this.cancel = false;
  258   			UiUtil.centerComponent(this);
  259   			show();
  260   			return getBorder(); // border should be ok
  261   		}
  262   
  263   		public final boolean isCancelled(){
  264   			return this.cancel;
  265   		}
  266   
  267   		class Closer extends WindowAdapter {
  268   			public final void windowClosing(WindowEvent e) {
  269   				Window w = e.getWindow();
  270   				w.hide();
  271   			}
  272   		}
  273   
  274   		class DisposeOnClose extends ComponentAdapter {
  275   			public final void componentHidden(ComponentEvent e) {
  276   				Window w = (Window)e.getComponent();
  277   				w.dispose();
  278   			}
  279   		}
  280       
  281   	}
  282   
  283   
  284   	public final static void main(String args[]){
  285   		JFrame f = new JFrame();
  286   		f.addWindowListener(new WindowAdapter(){
  287   				public final void windowClosing(WindowEvent e){
  288   					System.exit(0);
  289   				}
  290   			});
  291   		BorderEditor editor = new BorderEditor();
  292   		f.getContentPane().add(editor.getCustomEditor());
  293   		f.pack();
  294   		f.show();
  295   	}
  296   
  297   }

Save This Page
Home » openjdk-7 » net.jbeans.bean.property » editor » [javadoc | source]