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

📄 timeunitspage.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
字号:
package net.sourceforge.ganttproject.gui.projectwizard;import java.awt.BorderLayout;import java.awt.Component;import java.awt.event.ActionEvent;import java.util.ArrayList;import java.util.List;import javax.swing.AbstractAction;import javax.swing.Action;import javax.swing.Box;import javax.swing.JComboBox;import javax.swing.JComponent;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.SpringLayout;import javax.swing.SwingConstants;import org.jdesktop.swing.calendar.JXDatePickerFormatterFactory;import net.sourceforge.ganttproject.gui.options.OptionsPageBuilder;import net.sourceforge.ganttproject.gui.options.SpringUtilities;import net.sourceforge.ganttproject.gui.options.model.ChangeValueEvent;import net.sourceforge.ganttproject.gui.options.model.ChangeValueListener;import net.sourceforge.ganttproject.gui.options.model.DefaultEnumerationOption;import net.sourceforge.ganttproject.gui.options.model.DefaultStringOption;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.time.TimeUnit;import net.sourceforge.ganttproject.time.TimeUnitStack;import net.sourceforge.ganttproject.time.gregorian.GPTimeUnitStack;public class TimeUnitsPage implements WizardPage, ChangeValueListener {    private final TimeUnitStack myTimeUnitStack;    private GPOptionGroup myUnitRangeGroup;    private TimeUnitRangeOption myUnitOption1;    //private TimeUnitRangeOption myUnitOption2;    private TimeUnit myHighestUnit;    private TimeUnit myLowestUnit;    private DefaultStringOption myDayStartOption;    private DefaultStringOption myDayEndOption;    private GPOptionGroup myBusinessHoursGroup;    private JComponent myBusinessHoursComponent;    TimeUnitsPage(TimeUnitStack timeUnitStack) {        myTimeUnitStack = timeUnitStack;    }    public Component getComponent() {        myUnitOption1 = new TimeUnitRangeOption("projectwizard.timeUnitFrom");        //myUnitOption2 = new TimeUnitRangeOption("projectwizard.timeUnitTo");        myUnitOption1.addChangeValueListener(this);        //myUnitOption2.addChangeValueListener(this);        myUnitRangeGroup = new GPOptionGroup("projectwizard.timeUnitRange", new GPOption[] {myUnitOption1});        //        myDayStartOption = new DefaultStringOption("projectwizard.dayStart");        myDayEndOption = new DefaultStringOption("projectwizard.dayEnd");        myBusinessHoursGroup = new GPOptionGroup("projectwizard.businessHours", new GPOption[] {myDayStartOption, myDayEndOption});        OptionsPageBuilder builder = new OptionsPageBuilder();        JComponent timeunitRangeComponent = builder.buildPlanePage(new GPOptionGroup[] {myUnitRangeGroup});        myBusinessHoursComponent = builder.buildPlanePage(new GPOptionGroup[] {myBusinessHoursGroup});                Box box = Box.createVerticalBox();        box.add(timeunitRangeComponent);        box.add(Box.createVerticalStrut(5));        box.add(Box.createVerticalGlue());        box.add(myBusinessHoursComponent);                JPanel result = new JPanel(new BorderLayout());        result.add(box, BorderLayout.NORTH);                return result;    }    public String getTitle() {        return "Configure time granularity";    }    public void setActive(boolean isActive) {        if (isActive) {            myUnitRangeGroup.lock();        }        else {            myUnitRangeGroup.commit();            myTimeUnitStack.setTimeUnitRange(myLowestUnit, myHighestUnit);            JXDatePickerFormatterFactory.setDateFormats(myTimeUnitStack.getDateFormats());        }    }    private class TimeUnitRangeOption extends DefaultEnumerationOption {        public TimeUnitRangeOption(String id) {            super(id, getTimeUnitIDList());        }        public String getUncommitedValue() {            return super.getLockedValue();        }            }    private List<String> getTimeUnitIDList() {        List<TimeUnit> timeUnits = myTimeUnitStack.getTimeUnits();        List<String> ids = new ArrayList<String>(timeUnits.size());        for (TimeUnit nextUnit : timeUnits) {            ids.add(nextUnit.getName());        }        return ids;    }        private void updateBusinessHours() {        String unitName1 = myUnitOption1.getUncommitedValue();        //String unitName2 = myUnitOption2.getUncommitedValue();        if (unitName1==null) {            return;        }        myLowestUnit = null;        myHighestUnit = null;        for (TimeUnit nextUnit: myTimeUnitStack.getTimeUnits()) {            if (nextUnit.getName().equals(unitName1)) {                if (myLowestUnit==null) {                    myLowestUnit = nextUnit;                }                else if (myHighestUnit==null) {                    myHighestUnit = nextUnit;                }            }        }        if (myTimeUnitStack instanceof GPTimeUnitStack) {            GPTimeUnitStack gpStack = (GPTimeUnitStack) myTimeUnitStack;            if (gpStack.HOUR.isConstructedFrom(myLowestUnit)) {                setBusinessHoursEnabled(true);            }            else {                setBusinessHoursEnabled(false);            }        }    }    private void setBusinessHoursEnabled(boolean b) {        setEnabledTree(myBusinessHoursComponent, b);    }    public void changeValue(ChangeValueEvent event) {        updateBusinessHours();    }        private void setEnabledTree(JComponent root, boolean isEnabled) {        root.setEnabled(isEnabled);        Component[] components = root.getComponents();        for (int i = 0; i < components.length; i++) {            if (components[i] instanceof JComponent) {                setEnabledTree((JComponent) components[i], isEnabled);            }        }    }    }

⌨️ 快捷键说明

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