⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 optionspagebuilder.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Created on 02.04.2005 */package net.sourceforge.ganttproject.gui.options;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.ComponentOrientation;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.FocusAdapter;import java.awt.event.FocusEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java.util.Date;import javax.swing.AbstractAction;import javax.swing.Action;import javax.swing.BorderFactory;import javax.swing.ComboBoxModel;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JColorChooser;import javax.swing.JComboBox;import javax.swing.JComponent;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.SpringLayout;import javax.swing.SwingConstants;import javax.swing.UIManager;import javax.swing.border.Border;import javax.swing.border.EmptyBorder;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;import net.sourceforge.ganttproject.gui.IPropertySheetBuilder;import net.sourceforge.ganttproject.gui.options.model.BooleanOption;import net.sourceforge.ganttproject.gui.options.model.ChangeValueDispatcher;import net.sourceforge.ganttproject.gui.options.model.ChangeValueEvent;import net.sourceforge.ganttproject.gui.options.model.ChangeValueListener;import net.sourceforge.ganttproject.gui.options.model.ColorOption;import net.sourceforge.ganttproject.gui.options.model.DateOption;import net.sourceforge.ganttproject.gui.options.model.EnumerationOption;import net.sourceforge.ganttproject.gui.options.model.GPOption;import net.sourceforge.ganttproject.gui.options.model.GPOptionGroup;import net.sourceforge.ganttproject.gui.options.model.StringOption;import net.sourceforge.ganttproject.gui.options.model.ValidationException;import net.sourceforge.ganttproject.gui.options.model.WritableStateHint;import net.sourceforge.ganttproject.language.GanttLanguage;import org.jdesktop.swing.JXDatePicker;/** * @author bard */public class OptionsPageBuilder implements IPropertySheetBuilder {    protected static final Color INVALID_FIELD_COLOR = Color.RED.brighter();    I18N myi18n = new I18N();    private Component myParentComponent;        public OptionsPageBuilder() {        this(null);    }        public OptionsPageBuilder(Component parentComponent) {        myParentComponent = parentComponent;    }        public void setI18N(I18N i18n) {    	myi18n = i18n;    }        public I18N getI18N() {        return myi18n;    }        public void setOptionKeyPrefix(String optionKeyPrefix) {        myi18n.setOptionKeyPrefix(optionKeyPrefix);    }    public JComponent buildPage(GPOptionGroup[] optionGroups, String pageID) {        JPanel result = new JPanel(new BorderLayout());        result.setBorder(new EmptyBorder(0, 5, 0, 5));        TopPanel topPanel = new TopPanel(myi18n.getPageTitle(pageID), myi18n                .getPageDescription(pageID));        topPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));        result.add(topPanel, BorderLayout.NORTH);        JComponent planePage = buildPlanePage(optionGroups);        result.add(planePage, BorderLayout.CENTER);        return result;    }    public JComponent buildPlanePage(GPOptionGroup[] optionGroups) {        final JComponent optionsPanel = new JPanel(new SpringLayout());        for (int i = 0; i < optionGroups.length; i++) {            optionsPanel.add(createGroupComponent(optionGroups[i]));        }        SpringUtilities.makeCompactGrid(optionsPanel, optionGroups.length, 1,                0, 0, 5, 5);        JPanel resultPanel = new JPanel(new BorderLayout());        resultPanel.add(optionsPanel, BorderLayout.NORTH);        resultPanel.addFocusListener(new FocusAdapter() {            public void focusGained(FocusEvent e) {                optionsPanel.getComponent(0).requestFocus();            }                    });        return resultPanel;    }    public JComponent createGroupComponent(GPOptionGroup group) {        JPanel optionsPanel = new JPanel(new SpringLayout());        if (group.isTitled()) {            Border lineBorder = BorderFactory.createMatteBorder(1,0,0,0,Color.BLACK);            optionsPanel.setBorder(BorderFactory.createTitledBorder(lineBorder,myi18n                    .getOptionGroupLabel(group)));        }        GPOption[] options = group.getOptions();        for (int i = 0; i < options.length; i++) {            final GPOption nextOption = options[i];            final Component nextComponent = createOptionComponent(nextOption);            if (needsLabel(nextOption)) {                /*                Component nextLabel =createOptionLabel(options[i]);                optionsPanel.add(nextLabel);                */                JPanel labelPanel = new JPanel(new BorderLayout());                labelPanel.add(createOptionLabel(options[i]), BorderLayout.WEST);                                final WritableStateHint writableStateHint = (WritableStateHint) nextOption.getUIHint(WritableStateHint.class);                if (writableStateHint!=null) {                    final JLabel iconLabel = new JLabel();                    iconLabel.addMouseListener(new MouseAdapter() {                        boolean isWritable = writableStateHint.isWritable();                        final Icon myLockedIcon = new ImageIcon(getClass().getResource("/icons/status/locked.png"));                        final Icon myUnlockedIcon = new ImageIcon(getClass().getResource("/icons/status/unlocked.png"));                         {                            iconLabel.setIcon(getIcon());                            nextOption.addPropertyChangeListener(new PropertyChangeListener() {                                public void propertyChange(PropertyChangeEvent evt) {                                    if (WritableStateHint.PROPERTY_IS_WRITABLE.equals(evt.getPropertyName())) {                                        isWritable = writableStateHint.isWritable();                                        iconLabel.setIcon(getIcon());                                    }                                }                            });                        }                        private Icon getIcon() {                            return isWritable ? myUnlockedIcon : myLockedIcon;                         }                        public void mouseClicked(MouseEvent e) {                           if (writableStateHint.trySetWritable(!isWritable).isOK()) {                               writableStateHint.setWritable(!isWritable);                           }                        }                                            });                    labelPanel.add(iconLabel, BorderLayout.EAST);                }                optionsPanel.add(labelPanel);                                optionsPanel.add(nextComponent);                            }            else {                optionsPanel.add(nextComponent);                optionsPanel.add(new JPanel());            }            if (i==0) {                optionsPanel.addFocusListener(new FocusAdapter() {                    public void focusGained(FocusEvent e) {                        super.focusGained(e);                        nextComponent.requestFocus();                    }                                    });            }        }        if (options.length > 0) {            SpringUtilities.makeCompactGrid(optionsPanel, options.length, 2, 0,                    0, 3, 3);        }        return optionsPanel;    }    private boolean needsLabel(GPOption nextOption) {        //return false==nextOption instanceof BooleanOption;        return true;    }    public Component createStandaloneOptionPanel(GPOption option) {        JPanel optionPanel = new JPanel(new BorderLayout());        Component  optionComponent = createOptionComponent(option);         if (needsLabel(option)) {            optionPanel.add(createOptionLabel(option), BorderLayout.WEST);            optionPanel.add(optionComponent, BorderLayout.CENTER);        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -