/* GanttProject is an opensource project management tool. Copyright (C) 2004-2011 GanttProject Team 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 3 of the License, or (at your option) 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package net.sourceforge.ganttproject.gui; import biz.ganttproject.core.chart.render.AlphaRenderingOption; import biz.ganttproject.core.option.BooleanOption; import biz.ganttproject.core.option.DefaultBooleanOption; import biz.ganttproject.core.option.FontOption; import biz.ganttproject.core.option.IntegerOption; import com.google.common.base.Preconditions; import com.google.common.base.Supplier; import net.sourceforge.ganttproject.gui.options.model.GP1XOptionConverter; import javax.swing.*; import java.awt.*; /** * @author bard */ public class UIConfiguration { // private final Font myChartMainFont; /** default resource color */ private Color myResColor; /** overload resource color */ private Color myResOverColor; /** underload resource color */ private Color myResUnderColor; private Color myEarlierPreviousTaskColor; private Color myLaterPreviousTaskColor; private Color myPreviousTaskColor; /** Color used for weekend indications */ private Color myWeekEndColor; /** Color used for days off (and holidays) */ private Color myDayOffColor; private boolean isRedlineOn; private boolean isCriticalPathOn; private final AlphaRenderingOption myWeekendAlphaRenderingOption; private final RedlineOption myRedlineOption = new RedlineOption(); private BooleanOption myProjectDatesOption = new DefaultBooleanOption("showProjectDates"); private FontOption myChartFontOption; private Supplier<Integer> myAppFontSize; private IntegerOption myDpiOption; public UIConfiguration(Color taskColor, boolean isRedlineOn) { // myChartMainFont = chartMainFont == null ? Fonts.DEFAULT_CHART_FONT : chartMainFont; this.isRedlineOn = isRedlineOn; myResColor = new Color(140, 182, 206); myResOverColor = new Color(229, 50, 50); myResUnderColor = new Color(50, 229, 50); myEarlierPreviousTaskColor = new Color(50, 229, 50); myLaterPreviousTaskColor = new Color(229, 50, 50); myPreviousTaskColor = Color.LIGHT_GRAY; myWeekEndColor = Color.GRAY; myDayOffColor = new Color(0.9f, 1f, 0.17f); myWeekendAlphaRenderingOption = new AlphaRenderingOption(); myAppFontSize = new Supplier<Integer>() { @Override public Integer get() { Font tableFont = (Font) UIManager.get("Table.font"); return tableFont.getSize() + 8; } }; } // public Font getChartMainFont() { // return myChartMainFont; // } // public Color getResourceColor() { return myResColor; } public void setResourceColor(Color myResColor) { this.myResColor = myResColor; } public Color getResourceOverloadColor() { return myResOverColor; } public void setResourceOverloadColor(Color myResOverColor) { this.myResOverColor = myResOverColor; } public Color getResourceUnderloadColor() { return myResUnderColor; } public void setResourceUnderloadColor(Color myResUnderColor) { this.myResUnderColor = myResUnderColor; } public Color getEarlierPreviousTaskColor() { return myEarlierPreviousTaskColor; } public void setEarlierPreviousTaskColor(Color earlierTaskColor) { this.myEarlierPreviousTaskColor = earlierTaskColor; } public Color getLaterPreviousTaskColor() { return myLaterPreviousTaskColor; } public void setLaterPreviousTaskColor(Color laterTaskColor) { this.myLaterPreviousTaskColor = laterTaskColor; } public Color getPreviousTaskColor() { return myPreviousTaskColor; } public void setPreviousTaskColor(Color previousTaskColor) { this.myPreviousTaskColor = previousTaskColor; } public Color getWeekEndColor() { return myWeekEndColor; } public Color getDayOffColor() { return myDayOffColor; } public void setWeekEndColor(Color myWeekEndColor) { this.myWeekEndColor = myWeekEndColor; } public void setDayOffColor(Color dayOffColor) { this.myDayOffColor = dayOffColor; } public boolean isRedlineOn() { return isRedlineOn; } public void setRedlineOn(boolean redlineOn) { isRedlineOn = redlineOn; } public boolean isCriticalPathOn() { return isCriticalPathOn; } public void setCriticalPathOn(boolean isOn) { this.isCriticalPathOn = isOn; } public AlphaRenderingOption getWeekendAlphaRenderingOption() { return myWeekendAlphaRenderingOption; } class RedlineOption extends DefaultBooleanOption implements GP1XOptionConverter { RedlineOption() { super("showTodayLine"); } @Override public String getTagName() { return "redline"; } @Override public String getAttributeName() { return "value"; } @Override public void loadValue(String legacyValue) { lock(); loadPersistentValue(legacyValue); commit(); } @Override public void commit() { super.commit(); setRedlineOn(isChecked()); } }; public BooleanOption getRedlineOption() { return myRedlineOption; } public BooleanOption getProjectBoundariesOption() { return myProjectDatesOption; } public void setChartFontOption(FontOption chartFontOption) { myChartFontOption = chartFontOption; } public FontOption getChartFontOption() { return myChartFontOption; } public Supplier<Integer> getAppFontSize() { return myAppFontSize; } public IntegerOption getDpiOption() { return myDpiOption; } public void setDpiOption(IntegerOption dpiOption) { myDpiOption = Preconditions.checkNotNull(dpiOption); } }