alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 * AbstractOptionPane.java - Abstract option pane
 * :tabSize=8:indentSize=8:noTabs=false:
 * :folding=explicit:collapseFolds=1:
 *
 * Copyright (C) 1998, 1999, 2000, 2001, 2002 Slava Pestov
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

package org.gjt.sp.jedit;

//{{{ Imports
import javax.swing.border.EmptyBorder;
import javax.swing.*;
import java.awt.*;
//}}}

/**
 * The default implementation of the option pane interface.

* * See {@link EditPlugin} for information on how jEdit obtains and constructs * option pane instances.

* * Most option panes extend this implementation of {@link OptionPane}, instead * of implementing {@link OptionPane} directly. This class provides a convenient * default framework for laying out configuration options.

* * It is derived from Java's JPanel class and uses a * GridBagLayout object for component management. Since * GridBagLayout can be a bit cumbersome to use, this class * contains shortcut methods to simplify layout: * *

    *
  • {@link #addComponent(Component)}
  • *
  • {@link #addComponent(String,Component)}
  • *
  • {@link #addComponent(String,Component,int)}
  • *
  • {@link #addComponent(Component,Component)}
  • *
  • {@link #addComponent(Component,Component,int)}
  • *
  • {@link #addSeparator()}
  • *
  • {@link #addSeparator(String)}
  • *
* * @author Slava Pestov * @author John Gellene (API documentation) * @version $Id: AbstractOptionPane.java,v 1.18 2004/03/28 00:07:26 spestov Exp $ */ // even though this class is called AbstractOptionPane, it is not really // abstract, since BufferOptions uses an instance of it to lay out its // components. public class AbstractOptionPane extends JPanel implements OptionPane { //{{{ AbstractOptionPane constructor /** * Creates a new option pane. * @param name The internal name. The option pane's label is set to the * value of the property named options.name.label. */ public AbstractOptionPane(String name) { this.name = name; setLayout(gridBag = new GridBagLayout()); } //}}} //{{{ getName() method /** * Returns the internal name of this option pane. The option pane's label * is set to the value of the property named * options.name.label. */ public String getName() { return name; } //}}} //{{{ getComponent() method /** * Returns the component that should be displayed for this option pane. * Because this class extends Component, it simply returns "this". */ public Component getComponent() { return this; } //}}} //{{{ init() method /** * Do not override this method, override {@link #_init()} instead. */ // final in 4.2 public void init() { if(!initialized) { initialized = true; _init(); } } //}}} //{{{ save() method /** * Do not override this method, override {@link #_save()} instead. */ // final in 4.2 public void save() { if(initialized) _save(); } //}}} //{{{ addComponent() method /** * Adds a labeled component to the option pane. Components are * added in a vertical fashion, one per row. The label is * displayed to the left of the component. * @param label The label * @param comp The component */ public void addComponent(String label, Component comp) { JLabel l = new JLabel(label); l.setBorder(new EmptyBorder(0,0,0,12)); addComponent(l,comp,GridBagConstraints.BOTH); } //}}} //{{{ addComponent() method /** * Adds a labeled component to the option pane. Components are * added in a vertical fashion, one per row. The label is * displayed to the left of the component. * @param label The label * @param comp The component * @param fill Fill parameter to GridBagConstraints for the right * component */ public void addComponent(String label, Component comp, int fill) { JLabel l = new JLabel(label); l.setBorder(new EmptyBorder(0,0,0,12)); addComponent(l,comp,fill); } //}}} //{{{ addComponent() method /** * Adds a labeled component to the option pane. Components are * added in a vertical fashion, one per row. The label is * displayed to the left of the component. * @param comp1 The label * @param comp2 The component * * @since jEdit 4.1pre3 */ public void addComponent(Component comp1, Component comp2) { addComponent(comp1,comp2,GridBagConstraints.BOTH); } //}}} //{{{ addComponent() method /** * Adds a labeled component to the option pane. Components are * added in a vertical fashion, one per row. The label is * displayed to the left of the component. * @param comp1 The label * @param comp2 The component * @param fill Fill parameter to GridBagConstraints for the right * component * * @since jEdit 4.1pre3 */ public void addComponent(Component comp1, Component comp2, int fill) { GridBagConstraints cons = new GridBagConstraints(); cons.gridy = y++; cons.gridheight = 1; cons.gridwidth = 1; cons.weightx = 0.0f; cons.insets = new Insets(1,0,1,0); cons.fill = GridBagConstraints.BOTH; gridBag.setConstraints(comp1,cons); add(comp1); cons.fill = fill; cons.gridx = 1; cons.weightx = 1.0f; gridBag.setConstraints(comp2,cons); add(comp2); } //}}} //{{{ addComponent() method /** * Adds a component to the option pane. Components are * added in a vertical fashion, one per row. * @param comp The component */ public void addComponent(Component comp) { GridBagConstraints cons = new GridBagConstraints(); cons.gridy = y++; cons.gridheight = 1; cons.gridwidth = cons.REMAINDER; cons.fill = GridBagConstraints.NONE; cons.anchor = GridBagConstraints.WEST; cons.weightx = 1.0f; cons.insets = new Insets(1,0,1,0); gridBag.setConstraints(comp,cons); add(comp); } //}}} //{{{ addComponent() method /** * Adds a component to the option pane. Components are * added in a vertical fashion, one per row. * @param comp The component * @param fill Fill parameter to GridBagConstraints * @since jEdit 4.2pre2 */ public void addComponent(Component comp, int fill) { GridBagConstraints cons = new GridBagConstraints(); cons.gridy = y++; cons.gridheight = 1; cons.gridwidth = cons.REMAINDER; cons.fill = fill; cons.anchor = GridBagConstraints.WEST; cons.weightx = 1.0f; cons.insets = new Insets(1,0,1,0); gridBag.setConstraints(comp,cons); add(comp); } //}}} //{{{ addSeparator() method /** * Adds a separator component. * @since jEdit 4.1pre7 */ public void addSeparator() { addComponent(Box.createVerticalStrut(6)); JSeparator sep = new JSeparator(JSeparator.HORIZONTAL); GridBagConstraints cons = new GridBagConstraints(); cons.gridy = y++; cons.gridheight = 1; cons.gridwidth = cons.REMAINDER; cons.fill = GridBagConstraints.BOTH; cons.anchor = GridBagConstraints.WEST; cons.weightx = 1.0f; //cons.insets = new Insets(1,0,1,0); gridBag.setConstraints(sep,cons); add(sep); addComponent(Box.createVerticalStrut(6)); } //}}} //{{{ addSeparator() method /** * Adds a separator component. * @param label The separator label property * @since jEdit 2.6pre2 */ public void addSeparator(String label) { if(y != 0) addComponent(Box.createVerticalStrut(6)); Box box = new Box(BoxLayout.X_AXIS); Box box2 = new Box(BoxLayout.Y_AXIS); box2.add(Box.createGlue()); box2.add(new JSeparator(JSeparator.HORIZONTAL)); box2.add(Box.createGlue()); box.add(box2); JLabel l = new JLabel(jEdit.getProperty(label)); l.setMaximumSize(l.getPreferredSize()); box.add(l); Box box3 = new Box(BoxLayout.Y_AXIS); box3.add(Box.createGlue()); box3.add(new JSeparator(JSeparator.HORIZONTAL)); box3.add(Box.createGlue()); box.add(box3); GridBagConstraints cons = new GridBagConstraints(); cons.gridy = y++; cons.gridheight = 1; cons.gridwidth = cons.REMAINDER; cons.fill = GridBagConstraints.BOTH; cons.anchor = GridBagConstraints.WEST; cons.weightx = 1.0f; cons.insets = new Insets(1,0,1,0); gridBag.setConstraints(box,cons); add(box); } //}}} //{{{ Protected members /** * Has the option pane been initialized? */ protected boolean initialized; /** * The layout manager. */ protected GridBagLayout gridBag; /** * The number of components already added to the layout manager. */ protected int y; /** * This method should create and arrange the components of the option pane * and initialize the option data displayed to the user. This method * is called when the option pane is first displayed, and is not * called again for the lifetime of the object. */ protected void _init() {} /** * Called when the options dialog's "ok" button is clicked. * This should save any properties being edited in this option * pane. */ protected void _save() {} //}}} //{{{ Private members private String name; //}}} }
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.