/*
* file: GanttChartView.java
* author: Jon Iles
* copyright: (c) Packwood Software 2005
* date: Apr 7, 2005
*/
/*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by the
* Free Software Foundation; either version 2.1 of the License, or (at your
* option) any later version.
*
* This library 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 Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/
package net.sf.mpxj.mpp;
import java.awt.Color;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import net.sf.mpxj.FieldType;
import net.sf.mpxj.Filter;
import net.sf.mpxj.FilterContainer;
import net.sf.mpxj.ProjectFile;
import net.sf.mpxj.common.MPPTaskField;
/**
* This class represents the set of properties used to define the appearance
* of a Gantt chart view in MS Project.
*/
public abstract class GanttChartView extends GenericView
{
/**
* Extract the Gantt bar styles.
*
* @param props props structure containing the style definitions
*/
protected abstract void processDefaultBarStyles(Props props);
/**
* Extract the exception Gantt bar styles.
*
* @param props props structure containing the style definitions
*/
protected abstract void processExceptionBarStyles(Props props);
/**
* Extract autofilter definitions.
*
* @param data autofilters data block
*/
protected abstract void processAutoFilters(byte[] data);
/**
* Extract view properties.
*
* @param fontBases font defintions
* @param props Gantt chart view props
*/
protected abstract void processViewProperties(Map<Integer, FontBase> fontBases, Props props);
/**
* Extract table font styles.
*
* @param fontBases font bases
* @param data column data
*/
protected abstract void processTableFontStyles(Map<Integer, FontBase> fontBases, byte[] data);
/**
* Extract progress line properties.
*
* @param fontBases font bases
* @param data column data
*/
protected abstract void processProgressLines(Map<Integer, FontBase> fontBases, byte[] data);
/**
* Create a GanttChartView from the fixed and var data blocks associated
* with a view.
*
* @param parent parent MPP file
* @param fixedMeta fixed meta data block
* @param fixedData fixed data block
* @param varData var data block
* @param fontBases map of font bases
* @throws IOException
*/
GanttChartView(ProjectFile parent, byte[] fixedMeta, byte[] fixedData, Var2Data varData, Map<Integer, FontBase> fontBases)
throws IOException
{
super(parent, fixedData, varData);
//System.out.println(varData.getVarMeta());
//MPPUtility.fileDump("c:\\temp\\vardata.txt", varData.toString().getBytes());
m_filters = parent.getFilters();
m_showInMenu = (fixedMeta[8] & 0x08) != 0;
byte[] propsData = varData.getByteArray(m_id, getPropertiesID());
if (propsData != null)
{
Props9 props = new Props9(new ByteArrayInputStream(propsData));
//MPPUtility.fileDump("c:\\temp\\props.txt", props.toString().getBytes());
byte[] tableData = props.getByteArray(TABLE_PROPERTIES);
if (tableData != null)
{
m_tableWidth = MPPUtility.getShort(tableData, 35);
m_highlightFilter = (tableData[7] != 0);
}
byte[] filterName = props.getByteArray(FILTER_NAME);
if (filterName != null)
{
m_defaultFilterName = MPPUtility.getUnicodeString(filterName, 0);
}
byte[] groupName = props.getByteArray(GROUP_NAME);
if (groupName != null)
{
m_groupName = MPPUtility.getUnicodeString(groupName, 0);
}
processViewProperties(fontBases, props);
processDefaultBarStyles(props);
processExceptionBarStyles(props);
byte[] columnData = props.getByteArray(COLUMN_PROPERTIES);
if (columnData != null)
{
processTableFontStyles(fontBases, columnData);
}
byte[] progressLineData = props.getByteArray(PROGRESS_LINE_PROPERTIES);
if (progressLineData != null)
{
processProgressLines(fontBases, progressLineData);
}
byte[] autoFilterData = props.getByteArray(AUTO_FILTER_PROPERTIES);
if (autoFilterData != null)
{
processAutoFilters(autoFilterData);
}
}
//MPPUtility.fileDump("c:\\temp\\GanttChartView9.txt", toString().getBytes());
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getSheetColumnsGridLines()
{
return (m_sheetColumnsGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getSheetRowsGridLines()
{
return (m_sheetRowsGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getStatusDateGridLines()
{
return (m_statusDateGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getTitleHorizontalGridLines()
{
return (m_titleHorizontalGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getTitleVerticalGridLines()
{
return (m_titleVerticalGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getBarRowsGridLines()
{
return (m_barRowsGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getCurrentDateGridLines()
{
return (m_currentDateGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getGanttRowsGridLines()
{
return (m_ganttRowsGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getTopTierColumnGridLines()
{
return (m_topTierColumnGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getMiddleTierColumnGridLines()
{
return (m_middleTierColumnGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getBottomTierColumnGridLines()
{
return (m_bottomTierColumnGridLines);
}
/**
* Retrieve the name of the calendar used to define non-working days for
* this view..
*
* @return calendar name
*/
public String getNonWorkingDaysCalendarName()
{
return (m_nonWorkingDaysCalendarName);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getPageBreakGridLines()
{
return (m_pageBreakGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getProjectFinishGridLines()
{
return (m_projectFinishGridLines);
}
/**
* Retrieve a grid lines definition.
*
* @return grid lines definition
*/
public GridLines getProjectStartGridLines()
{
return (m_projectStartGridLines);
}
/**
* Retrieve the height of the Gantt bars in this view.
*
* @return Gantt bar height
*/
public int getGanttBarHeight()
{
return (m_ganttBarHeight);
}
/**
* Retrieve a flag indicating if a separator is shown between the
* major and minor scales.
*
* @return boolean flag
*/
public boolean getTimescaleScaleSeparator()
{
return (m_timescaleScaleSeparator);
}
/**
* Retrieves a timescale tier.
*
* @return timescale tier
*/
public TimescaleTier getTimescaleTopTier()
{
return (m_timescaleTopTier);
}
/**
* Retrieves a timescale tier.
*
* @return timescale tier
*/
public TimescaleTier getTimescaleMiddleTier()
{
return (m_timescaleMiddleTier);
}
/**
* Retrieves a timescale tier.
*
* @return timescale tier
*/
public TimescaleTier getTimescaleBottomTier()
{
return (m_timescaleBottomTier);
}
/**
* Retrieve the timescale size value. This is a percentage value.
*
* @return timescale size value
*/
public int getTimescaleSize()
{
return (m_timescaleSize);
}
/**
* Retrieve the number of timescale tiers to display.
*
* @return number of timescale tiers to show
*/
public int getTimescaleShowTiers()
{
return m_timescaleShowTiers;
}
/**
* Retrieve the non-working time color.
*
* @return non-working time color
*/
public Color getNonWorkingColor()
{
return (m_nonWorkingColor);
}
/**
* Retrieve the non-working time pattern. This is an integer between
* 0 and 10 inclusive which represents the fixed set of patterns
* supported by MS Project.
*
* @return non-working time pattern
*/
public ChartPattern getNonWorkingPattern()
{
return (m_nonWorkingPattern);
}
/**
* Retrieve the style used to draw non-working time.
*
* @return non working time style
*/
public NonWorkingTimeStyle getNonWorkingStyle()
{
return (m_nonWorkingStyle);
}
/**
* Retrieve the always rollup Gantt bars flag.
*
* @return always rollup Gantt bars flag
*/
public boolean getAlwaysRollupGanttBars()
{
return (m_alwaysRollupGanttBars);
}
/**
* Retrieve the bar date format.
*
* @return bar date format
*/
public GanttBarDateFormat getBarDateFormat()
{
return (m_barDateFormat);
}
/**
* Retrieve the hide rollup bars when summary expanded.
*
* @return hide rollup bars when summary expanded
*/
public boolean getHideRollupBarsWhenSummaryExpanded()
{
return (m_hideRollupBarsWhenSummaryExpanded);
}
/**
* Retrieve the bar link style.
*
* @return bar link style
*/
public LinkStyle getLinkStyle()
{
return (m_linkStyle);
}
/**
* Retrieve the round bars to whole days flag.
*
* @return round bars to whole days flag
*/
public boolean getRoundBarsToWholeDays()
{
return (m_roundBarsToWholeDays);
}
/**
* Retrieve the show bar splits flag.
*
* @return show bar splits flag
*/
public boolean getShowBarSplits()
{
return (m_showBarSplits);
}
/**
* Retrieve the show drawings flag.
*
* @return show drawings flag
*/
public boolean getShowDrawings()
{
return (m_showDrawings);
}
/**
* Retrieve an array representing bar styles which have been defined
* by the user for a specific task.
*
* @return array of bar style exceptions
*/
public GanttBarStyleException[] getBarStyleExceptions()
{
return m_barStyleExceptions;
}
/**
* Retrieve an array of bar styles which are applied to all Gantt
* chart bars, unless an exception has been defined.
*
* @return array of bar styles
*/
public GanttBarStyle[] getBarStyles()
{
return m_barStyles;
}
/**
* Retrieve the width ofthe table part of the view.
*
* @return table width
*/
public int getTableWidth()
{
return (m_tableWidth);
}
/**
* Retrieve the name of the filter applied to this view.
*
* @return filter name
*/
public String getDefaultFilterName()
{
return (m_defaultFilterName);
}
/**
* Convenience method used to retrieve the default filter instance
* associated with this view.
*
* @return filter instance, null if no filter associated with view
*/
public Filter getDefaultFilter()
{
return (m_filters.getFilterByName(m_defaultFilterName));
}
/**
* Retrieve the name of the grouping applied to this view.
*
* @return group name
*/
public String getGroupName()
{
return (m_groupName);
}
/**
* Retrieve the highlight filter flag.
*
* @return highlight filter flag
*/
public boolean getHighlightFilter()
{
return (m_highlightFilter);
}
/**
* Retrieve the show in menu flag.
*
* @return show in menu flag
*/
public boolean getShowInMenu()
{
return (m_showInMenu);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getBarTextBottomFontStyle()
{
return (m_barTextBottomFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getBarTextInsideFontStyle()
{
return (m_barTextInsideFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getBarTextLeftFontStyle()
{
return (m_barTextLeftFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getBarTextRightFontStyle()
{
return (m_barTextRightFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getBarTextTopFontStyle()
{
return (m_barTextTopFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getCriticalTasksFontStyle()
{
return (m_criticalTasksFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getExternalTasksFontStyle()
{
return (m_externalTasksFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getHighlightedTasksFontStyle()
{
return (m_highlightedTasksFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getTopTimescaleFontStyle()
{
return (m_topTimescaleFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getMiddleTimescaleFontStyle()
{
return (m_middleTimescaleFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getMarkedTasksFontStyle()
{
return (m_markedTasksFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getMilestoneTasksFontStyle()
{
return (m_milestoneTasksFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getBottomTimescaleFontStyle()
{
return (m_bottomTimescaleFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getNonCriticalTasksFontStyle()
{
return (m_nonCriticalTasksFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getProjectSummaryTasksFontStyle()
{
return (m_projectSummaryTasksFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getRowAndColumnFontStyle()
{
return (m_rowAndColumnFontStyle);
}
/**
* Retrieve a FontStyle instance.
*
* @return FontStyle instance
*/
public FontStyle getSummaryTasksFontStyle()
{
return (m_summaryTasksFontStyle);
}
/**
* Retrieve any column font syles which the user has defined.
*
* @return column font styles array
*/
public TableFontStyle[] getTableFontStyles()
{
return (m_tableFontStyles);
}
/**
* Retrieve the progress lines actual plan flag.
*
* @return boolean flag
*/
public boolean getProgressLinesActualPlan()
{
return (m_progressLinesActualPlan);
}
/**
* Retrieve the progress lines at current date flag.
*
* @return boolean flag
*/
public boolean getProgressLinesAtCurrentDate()
{
return (m_progressLinesAtCurrentDate);
}
/**
* Retrieve the progress lines at recurring intervals flag.
*
* @return boolean flag
*/
public boolean getProgressLinesAtRecurringIntervals()
{
return (m_progressLinesAtRecurringIntervals);
}
/**
* Retrieve the progress lines begin at date.
*
* @return progress lines begin at date
*/
public Date getProgressLinesBeginAtDate()
{
return (m_progressLinesBeginAtDate);
}
/**
* Retrieve the progress lines begin at project start flag.
*
* @return boolean flag
*/
public boolean getProgressLinesBeginAtProjectStart()
{
return (m_progressLinesBeginAtProjectStart);
}
/**
* Retrieve the progress lines current line color.
*
* @return current line color
*/
public Color getProgressLinesCurrentLineColor()
{
return (m_progressLinesCurrentLineColor);
}
/**
* Retrieve the progress lines current line style.
*
* @return current line style
*/
public LineStyle getProgressLinesCurrentLineStyle()
{
return (m_progressLinesCurrentLineStyle);
}
/**
* Retrieve the current progress point color.
*
* @return current progress point color
*/
public Color getProgressLinesCurrentProgressPointColor()
{
return (m_progressLinesCurrentProgressPointColor);
}
/**
* Retrieve the current progress point shape.
*
* @return current progress point shape
*/
public int getProgressLinesCurrentProgressPointShape()
{
return (m_progressLinesCurrentProgressPointShape);
}
/**
* Retrieve the progress lines daily day number.
*
* @return progress lines daily day number
*/
public int getProgressLinesIntervalDailyDayNumber()
{
return (m_progressLinesIntervalDailyDayNumber);
}
/**
* Retrieve the progress lines daily workday flag.
*
* @return daily workday flag
*/
public boolean isProgressLinesIntervalDailyWorkday()
{
return (m_progressLinesIntervalDailyWorkday);
}
/**
* Retrieve the progress line date format.
*
* @return progress line date format.
*/
public int getProgressLinesDateFormat()
{
return (m_progressLinesDateFormat);
}
/**
* Retrieves the flag indicating if selected dates have been supplied
* for progress line display.
*
* @return boolean flag
*/
public boolean getProgressLinesDisplaySelected()
{
return (m_progressLinesDisplaySelected);
}
/**
* Retrieves an array of selected dates for progress line display,
* or returns null if no dates have been supplied.
*
* @return array of selected dates
*/
public Date[] getProgressLinesDisplaySelectedDates()
{
return (m_progressLinesDisplaySelectedDates);
}
/**
* Retrieves the progress lines display type.
*
* @return progress lines display type
*/
public int getProgressLinesDisplayType()
{
return (m_progressLinesDisplayType);
}
/**
* Retrieves the progress lines enabled flag.
*
* @return boolean flag
*/
public boolean getProgressLinesEnabled()
{
return (m_progressLinesEnabled);
}
/**
* Retrieves the progress lines font style.
*
* @return progress lines font style
*/
public FontStyle getProgressLinesFontStyle()
{
return (m_progressLinesFontStyle);
}
/**
* Retrieves the progress line interval.
*
* @return progress line interval
*/
public Interval getProgressLinesInterval()
{
return (m_progressLinesInterval);
}
/**
* Retrieves the progress lines monthly day.
*
* @return progress lines monthly day
*/
public ProgressLineDay getProgressLinesIntervalMonthlyFirstLastDay()
{
return (m_progressLinesIntervalMonthlyFirstLastDay);
}
/**
* Retrieves the progress lines month number for the monthly first last type.
*
* @return month number
*/
public int getProgressLinesIntervalMonthlyFirstLastMonthNumber()
{
return m_progressLinesIntervalMonthlyFirstLastMonthNumber;
}
/**
* Retrieves the progress lines monthly day number.
*
* @return progress lines monthly day number
*/
public int getProgressLinesIntervalMonthlyDayDayNumber()
{
return (m_progressLinesIntervalMonthlyDayDayNumber);
}
/**
* Retrieves the progress lines monthly day of month.
*
* @return progress lines monthly day of month
*/
public boolean getProgressLinesIntervalMonthlyDay()
{
return (m_progressLinesIntervalMonthlyDay);
}
/**
* Retrieves the progress line month number for the monthly day type.
*
* @return month number
*/
public int getProgressLinesIntervalMonthlyDayMonthNumber()
{
return m_progressLinesIntervalMonthlyDayMonthNumber;
}
/**
* Retrieves the progress lines monthly first flag.
*
* @return progress lines monthly first flag
*/
public boolean getProgressLinesIntervalMonthlyFirstLast()
{
return (m_progressLinesIntervalMonthlyFirstLast);
}
/**
* Retrieves the progress lines other line color.
*
* @return progress lines other line color
*/
public Color getProgressLinesOtherLineColor()
{
return (m_progressLinesOtherLineColor);
}
/**
* Retrieves the progress lines other line style.
*
* @return progress lines other line style
*/
public LineStyle getProgressLinesOtherLineStyle()
{
return (m_progressLinesOtherLineStyle);
}
/**
* Retrieves the progress lines other progress point color.
*
* @return progress lines other progress point color
*/
public Color getProgressLinesOtherProgressPointColor()
{
return (m_progressLinesOtherProgressPointColor);
}
/**
* Retrieves the progress lines other progress point shape.
*
* @return progress lines other progress point shape
*/
public int getProgressLinesOtherProgressPointShape()
{
return (m_progressLinesOtherProgressPointShape);
}
/**
* Retrieves the progress lines show date flag.
*
* @return progress lines show date flag
*/
public boolean getProgressLinesShowDate()
{
return (m_progressLinesShowDate);
}
/**
* Retrieves the progress lines weekly week number.
*
* @return progress lines weekly week number
*/
public int getProgressLinesIntervalWeekleyWeekNumber()
{
return (m_progressLinesIntervalWeekleyWeekNumber);
}
/**
* Retrieves the progress lines weekly day.
* Note that this is designed to be used with the constants defined
* by the Day class, for example use Day.MONDAY.getValue() as the
* index into this array for the Monday flag.
*
* @return progress lines weekly day
*/
public boolean[] getProgressLinesIntervalWeeklyDay()
{
return (m_progressLinesIntervalWeeklyDay);
}
/**
* This method maps the encoded height of a Gantt bar to
* the height in pixels.
*
* @param height encoded height
* @return height in pixels
*/
protected int mapGanttBarHeight(int height)
{
switch (height)
{
case 0:
{
height = 6;
break;
}
case 1:
{
height = 8;
break;
}
case 2:
{
height = 10;
break;
}
case 3:
{
height = 12;
break;
}
case 4:
{
height = 14;
break;
}
case 5:
{
height = 18;
break;
}
case 6:
{
height = 24;
break;
}
}
return (height);
}
/**
* Retrieve font details from a block of property data.
*
* @param data property data
* @param offset offset into property data
* @param fontBases map of font bases
* @return FontStyle instance
*/
protected FontStyle getFontStyle(byte[] data, int offset, Map<Integer, FontBase> fontBases)
{
Integer index = Integer.valueOf(MPPUtility.getByte(data, offset));
FontBase fontBase = fontBases.get(index);
int style = MPPUtility.getByte(data, offset + 1);
ColorType color = ColorType.getInstance(MPPUtility.getByte(data, offset + 2));
boolean bold = ((style & 0x01) != 0);
boolean italic = ((style & 0x02) != 0);
boolean underline = ((style & 0x04) != 0);
FontStyle fontStyle = new FontStyle(fontBase, italic, bold, underline, false, color.getColor(), null, BackgroundPattern.SOLID);
//System.out.println(fontStyle);
return fontStyle;
}
/**
* Retrieve column font details from a block of property data.
*
* @param data property data
* @param offset offset into property data
* @param fontBases map of font bases
* @return ColumnFontStyle instance
*/
protected TableFontStyle getColumnFontStyle(byte[] data, int offset, Map<Integer, FontBase> fontBases)
{
int uniqueID = MPPUtility.getInt(data, offset);
FieldType fieldType = MPPTaskField.getInstance(MPPUtility.getShort(data, offset + 4));
Integer index = Integer.valueOf(MPPUtility.getByte(data, offset + 8));
int style = MPPUtility.getByte(data, offset + 9);
ColorType color = ColorType.getInstance(MPPUtility.getByte(data, offset + 10));
int change = MPPUtility.getByte(data, offset + 12);
FontBase fontBase = fontBases.get(index);
boolean bold = ((style & 0x01) != 0);
boolean italic = ((style & 0x02) != 0);
boolean underline = ((style & 0x04) != 0);
boolean boldChanged = ((change & 0x01) != 0);
boolean underlineChanged = ((change & 0x02) != 0);
boolean italicChanged = ((change & 0x04) != 0);
boolean colorChanged = ((change & 0x08) != 0);
boolean fontChanged = ((change & 0x10) != 0);
boolean backgroundColorChanged = (uniqueID == -1);
boolean backgroundPatternChanged = (uniqueID == -1);
return (new TableFontStyle(uniqueID, fieldType, fontBase, italic, bold, underline, false, color.getColor(), Color.BLACK, BackgroundPattern.TRANSPARENT, italicChanged, boldChanged, underlineChanged, false, colorChanged, fontChanged, backgroundColorChanged, backgroundPatternChanged));
}
/**
* Retrieves a list of all auto filters associated with this view.
*
* @return list of filter instances
*/
public List<Filter> getAutoFilters()
{
return (m_autoFilters);
}
/**
* Retrieves the auto filter definition associated with an
* individual column. Returns null if there is no filter defined for
* the supplied column type.
*
* @param type field type
* @return filter instance
*/
public Filter getAutoFilterByType(FieldType type)
{
return (m_autoFiltersByType.get(type));
}
/**
* Generate a string representation of this instance.
*
* @return string representation of this instance
*/
@Override public String toString()
{
ByteArrayOutputStream os = new ByteArrayOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.println("[GanttChartView");
pw.println(" " + super.toString());
pw.println(" highlightedTasksFontStyle=" + m_highlightedTasksFontStyle);
pw.println(" rowAndColumnFontStyle=" + m_rowAndColumnFontStyle);
pw.println(" nonCriticalTasksFontStyle=" + m_nonCriticalTasksFontStyle);
pw.println(" criticalTasksFontStyle=" + m_criticalTasksFontStyle);
pw.println(" summaryTasksFontStyle=" + m_summaryTasksFontStyle);
pw.println(" milestoneTasksFontStyle=" + m_milestoneTasksFontStyle);
pw.println(" topTimescaleFontStyle=" + m_topTimescaleFontStyle);
pw.println(" middleTimescaleFontStyle=" + m_middleTimescaleFontStyle);
pw.println(" bottomTimescaleFontStyle=" + m_bottomTimescaleFontStyle);
pw.println(" barTextLeftFontStyle=" + m_barTextLeftFontStyle);
pw.println(" barTextRightFontStyle=" + m_barTextRightFontStyle);
pw.println(" barTextTopFontStyle=" + m_barTextTopFontStyle);
pw.println(" barTextBottomFontStyle=" + m_barTextBottomFontStyle);
pw.println(" barTextInsideFontStyle=" + m_barTextInsideFontStyle);
pw.println(" markedTasksFontStyle=" + m_markedTasksFontStyle);
pw.println(" projectSummaryTasksFontStyle=" + m_projectSummaryTasksFontStyle);
pw.println(" externalTasksFontStyle=" + m_externalTasksFontStyle);
pw.println(" SheetRowsGridLines=" + m_sheetRowsGridLines);
pw.println(" SheetColumnsGridLines=" + m_sheetColumnsGridLines);
pw.println(" TitleVerticalGridLines=" + m_titleVerticalGridLines);
pw.println(" TitleHorizontalGridLines=" + m_titleHorizontalGridLines);
pw.println(" TopTierColumnGridLines=" + m_topTierColumnGridLines);
pw.println(" MiddleTierColumnGridLines=" + m_middleTierColumnGridLines);
pw.println(" BottomTierColumnGridLines=" + m_bottomTierColumnGridLines);
pw.println(" GanttRowsGridLines=" + m_ganttRowsGridLines);
pw.println(" BarRowsGridLines=" + m_barRowsGridLines);
pw.println(" CurrentDateGridLines=" + m_currentDateGridLines);
pw.println(" PageBreakGridLines=" + m_pageBreakGridLines);
pw.println(" ProjectStartGridLines=" + m_projectStartGridLines);
pw.println(" ProjectFinishGridLines=" + m_projectFinishGridLines);
pw.println(" StatusDateGridLines=" + m_statusDateGridLines);
pw.println(" GanttBarHeight=" + m_ganttBarHeight);
pw.println(" TimescaleTopTier=" + m_timescaleTopTier);
pw.println(" TimescaleMiddleTier=" + m_timescaleMiddleTier);
pw.println(" TimescaleBottomTier=" + m_timescaleBottomTier);
pw.println(" TimescaleSeparator=" + m_timescaleScaleSeparator);
pw.println(" TimescaleSize=" + m_timescaleSize + "%");
pw.println(" NonWorkingDaysCalendarName=" + m_nonWorkingDaysCalendarName);
pw.println(" NonWorkingColor=" + m_nonWorkingColor);
pw.println(" NonWorkingPattern=" + m_nonWorkingPattern);
pw.println(" NonWorkingStyle=" + m_nonWorkingStyle);
pw.println(" ShowDrawings=" + m_showDrawings);
pw.println(" RoundBarsToWholeDays=" + m_roundBarsToWholeDays);
pw.println(" ShowBarSplits=" + m_showBarSplits);
pw.println(" AlwaysRollupGanttBars=" + m_alwaysRollupGanttBars);
pw.println(" HideRollupBarsWhenSummaryExpanded=" + m_hideRollupBarsWhenSummaryExpanded);
pw.println(" BarDateFormat=" + m_barDateFormat);
pw.println(" LinkStyle=" + m_linkStyle);
pw.println(" ProgressLinesEnabled=" + m_progressLinesEnabled);
pw.println(" ProgressLinesAtCurrentDate=" + m_progressLinesAtCurrentDate);
pw.println(" ProgressLinesAtRecurringIntervals=" + m_progressLinesAtRecurringIntervals);
pw.println(" ProgressLinesInterval=" + m_progressLinesInterval);
pw.println(" ProgressLinesDailyDayNumber=" + m_progressLinesIntervalDailyDayNumber);
pw.println(" ProgressLinesDailyWorkday=" + m_progressLinesIntervalDailyWorkday);
pw.print(" ProgressLinesWeeklyDay=[");
for (int loop = 0; loop < m_progressLinesIntervalWeeklyDay.length; loop++)
{
if (loop != 0)
{
pw.print(",");
}
pw.print(m_progressLinesIntervalWeeklyDay[loop]);
}
pw.println("]");
pw.println(" ProgressLinesWeeklyWeekNumber=" + m_progressLinesIntervalWeekleyWeekNumber);
pw.println(" ProgressLinesMonthlyDayOfMonth=" + m_progressLinesIntervalMonthlyDay);
pw.println(" ProgressLinesMonthDayNumber=" + m_progressLinesIntervalMonthlyDayDayNumber);
pw.println(" ProgressLinesMonthlyDay=" + m_progressLinesIntervalMonthlyFirstLastDay);
pw.println(" ProgressLinesMonthlyFirst=" + m_progressLinesIntervalMonthlyFirstLast);
pw.println(" ProgressLinesBeginAtProjectStart=" + m_progressLinesBeginAtProjectStart);
pw.println(" ProgressLinesBeginAtDate=" + m_progressLinesBeginAtDate);
pw.println(" ProgressLinesDisplaySelected=" + m_progressLinesDisplaySelected);
pw.print(" ProgressLinesDisplaySelectedDates=[");
if (m_progressLinesDisplaySelectedDates != null)
{
for (int loop = 0; loop < m_progressLinesDisplaySelectedDates.length; loop++)
{
if (loop != 0)
{
pw.print(",");
}
pw.print(m_progressLinesDisplaySelectedDates[loop]);
}
}
pw.println("]");
pw.println(" ProgressLinesActualPlan=" + m_progressLinesActualPlan);
pw.println(" ProgressLinesDisplayType=" + m_progressLinesDisplayType);
pw.println(" ProgressLinesShowDate=" + m_progressLinesShowDate);
pw.println(" ProgressLinesDateFormat=" + m_progressLinesDateFormat);
pw.println(" ProgressLinesFontStyle=" + m_progressLinesFontStyle);
pw.println(" ProgressLinesCurrentLineColor=" + m_progressLinesCurrentLineColor);
pw.println(" ProgressLinesCurrentLineStyle=" + m_progressLinesCurrentLineStyle);
pw.println(" ProgressLinesCurrentProgressPointColor=" + m_progressLinesCurrentProgressPointColor);
pw.println(" ProgressLinesCurrentProgressPointShape=" + m_progressLinesCurrentProgressPointShape);
pw.println(" ProgressLinesOtherLineColor=" + m_progressLinesOtherLineColor);
pw.println(" ProgressLinesOtherLineStyle=" + m_progressLinesOtherLineStyle);
pw.println(" ProgressLinesOtherProgressPointColor=" + m_progressLinesOtherProgressPointColor);
pw.println(" ProgressLinesOtherProgressPointShape=" + m_progressLinesOtherProgressPointShape);
pw.println(" TableWidth=" + m_tableWidth);
pw.println(" DefaultFilterName=" + m_defaultFilterName);
pw.println(" GroupName=" + m_groupName);
pw.println(" HighlightFilter=" + m_highlightFilter);
pw.println(" ShowInMenu=" + m_showInMenu);
if (m_tableFontStyles != null)
{
for (int loop = 0; loop < m_tableFontStyles.length; loop++)
{
pw.println(" ColumnFontStyle=" + m_tableFontStyles[loop]);
}
}
if (m_barStyles != null)
{
for (int loop = 0; loop < m_barStyles.length; loop++)
{
pw.println(" BarStyle=" + m_barStyles[loop]);
}
}
if (m_barStyleExceptions != null)
{
for (int loop = 0; loop < m_barStyleExceptions.length; loop++)
{
pw.println(" BarStyleException=" + m_barStyleExceptions[loop]);
}
}
if (!m_autoFilters.isEmpty())
{
for (Filter f : m_autoFilters)
{
pw.println(" AutoFilter=" + f);
}
}
pw.println("]");
pw.flush();
return (os.toString());
}
protected GridLines m_sheetRowsGridLines;
protected GridLines m_sheetColumnsGridLines;
protected GridLines m_titleVerticalGridLines;
protected GridLines m_titleHorizontalGridLines;
protected GridLines m_middleTierColumnGridLines;
protected GridLines m_bottomTierColumnGridLines;
protected GridLines m_ganttRowsGridLines;
protected GridLines m_barRowsGridLines;
protected GridLines m_currentDateGridLines;
protected GridLines m_pageBreakGridLines;
protected GridLines m_projectStartGridLines;
protected GridLines m_projectFinishGridLines;
protected GridLines m_statusDateGridLines;
protected GridLines m_topTierColumnGridLines;
protected int m_ganttBarHeight;
protected TimescaleTier m_timescaleTopTier;
protected TimescaleTier m_timescaleMiddleTier;
protected TimescaleTier m_timescaleBottomTier;
protected boolean m_timescaleScaleSeparator;
protected int m_timescaleSize;
protected int m_timescaleShowTiers;
protected String m_nonWorkingDaysCalendarName;
protected Color m_nonWorkingColor;
protected ChartPattern m_nonWorkingPattern;
protected NonWorkingTimeStyle m_nonWorkingStyle;
protected boolean m_showDrawings;
protected boolean m_roundBarsToWholeDays;
protected boolean m_showBarSplits;
protected boolean m_alwaysRollupGanttBars;
protected boolean m_hideRollupBarsWhenSummaryExpanded;
protected GanttBarDateFormat m_barDateFormat;
protected LinkStyle m_linkStyle;
protected GanttBarStyle[] m_barStyles;
protected GanttBarStyleException[] m_barStyleExceptions;
private int m_tableWidth;
private String m_defaultFilterName;
private String m_groupName;
private boolean m_highlightFilter;
private boolean m_showInMenu;
protected FontStyle m_highlightedTasksFontStyle;
protected FontStyle m_rowAndColumnFontStyle;
protected FontStyle m_nonCriticalTasksFontStyle;
protected FontStyle m_criticalTasksFontStyle;
protected FontStyle m_summaryTasksFontStyle;
protected FontStyle m_milestoneTasksFontStyle;
protected FontStyle m_topTimescaleFontStyle;
protected FontStyle m_middleTimescaleFontStyle;
protected FontStyle m_bottomTimescaleFontStyle;
protected FontStyle m_barTextLeftFontStyle;
protected FontStyle m_barTextRightFontStyle;
protected FontStyle m_barTextTopFontStyle;
protected FontStyle m_barTextBottomFontStyle;
protected FontStyle m_barTextInsideFontStyle;
protected FontStyle m_markedTasksFontStyle;
protected FontStyle m_projectSummaryTasksFontStyle;
protected FontStyle m_externalTasksFontStyle;
protected TableFontStyle[] m_tableFontStyles;
protected boolean m_progressLinesEnabled;
protected boolean m_progressLinesAtCurrentDate;
protected boolean m_progressLinesAtRecurringIntervals;
protected Interval m_progressLinesInterval;
protected int m_progressLinesIntervalDailyDayNumber;
protected boolean m_progressLinesIntervalDailyWorkday;
protected boolean[] m_progressLinesIntervalWeeklyDay = new boolean[8];
protected int m_progressLinesIntervalWeekleyWeekNumber;
protected boolean m_progressLinesIntervalMonthlyDay;
protected int m_progressLinesIntervalMonthlyDayDayNumber;
protected int m_progressLinesIntervalMonthlyDayMonthNumber;
protected ProgressLineDay m_progressLinesIntervalMonthlyFirstLastDay;
protected boolean m_progressLinesIntervalMonthlyFirstLast;
protected int m_progressLinesIntervalMonthlyFirstLastMonthNumber;
protected boolean m_progressLinesBeginAtProjectStart;
protected Date m_progressLinesBeginAtDate;
protected boolean m_progressLinesDisplaySelected;
protected Date[] m_progressLinesDisplaySelectedDates;
protected boolean m_progressLinesActualPlan;
protected int m_progressLinesDisplayType;
protected boolean m_progressLinesShowDate;
protected int m_progressLinesDateFormat;
protected FontStyle m_progressLinesFontStyle;
protected Color m_progressLinesCurrentLineColor;
protected LineStyle m_progressLinesCurrentLineStyle;
protected Color m_progressLinesCurrentProgressPointColor;
protected int m_progressLinesCurrentProgressPointShape;
protected Color m_progressLinesOtherLineColor;
protected LineStyle m_progressLinesOtherLineStyle;
protected Color m_progressLinesOtherProgressPointColor;
protected int m_progressLinesOtherProgressPointShape;
protected List<Filter> m_autoFilters = new LinkedList<Filter>();
protected Map<FieldType, Filter> m_autoFiltersByType = new HashMap<FieldType, Filter>();
private FilterContainer m_filters;
protected static final Integer VIEW_PROPERTIES = Integer.valueOf(574619656);
protected static final Integer TIMESCALE_PROPERTIES = Integer.valueOf(574619678);
private static final Integer TABLE_PROPERTIES = Integer.valueOf(574619655);
private static final Integer FILTER_NAME = Integer.valueOf(574619659);
private static final Integer GROUP_NAME = Integer.valueOf(574619672);
private static final Integer COLUMN_PROPERTIES = Integer.valueOf(574619660);
private static final Integer PROGRESS_LINE_PROPERTIES = Integer.valueOf(574619671);
private static final Integer AUTO_FILTER_PROPERTIES = Integer.valueOf(574619669);
}