/* * Licensed Materials - Property of Perforce Software, Inc. * © Copyright Perforce Software, Inc. 2014, 2021 * © Copyright IBM Corp. 2009, 2014 * © Copyright ILOG 1996, 2009 * All Rights Reserved. * * Note to U.S. Government Users Restricted Rights: * The Software and Documentation were developed at private expense and * are "Commercial Items" as that term is defined at 48 CFR 2.101, * consisting of "Commercial Computer Software" and * "Commercial Computer Software Documentation", as such terms are * used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4, * as applicable. */ package database; import java.awt.event.ActionEvent; import java.util.Date; import ilog.views.gantt.IlvDuration; import ilog.views.gantt.IlvGanttModel; import ilog.views.gantt.IlvHierarchyChart; import ilog.views.gantt.IlvTimeInterval; import ilog.views.gantt.IlvTimeUtil; import ilog.views.gantt.action.IlvZoomToFitAction; import xml.XMLGanttActions; /** * This class groups a number of <code>IlvAction</code>(s) and utility methods * that are used in the database demos. */ public final class DBGanttActions { /** * Prevent instance creation. */ private DBGanttActions() { } /** * Creates a new data model connected to a simulated database, where the * database is constructed from the specified data model. */ public static DBROGanttModel createDBGanttModel(IlvGanttModel model) { GanttDBRO db = new GanttModelDBROWrapper(model); return new DBROGanttModel(db); } /** * An action that opens an XML project file and creates a simulated database. */ public static class OpenXMLAsDatabaseAction extends XMLGanttActions.OpenXMLAction { public OpenXMLAsDatabaseAction(IlvHierarchyChart chart) { super(chart); getZoomToFitAction().setIntervalPolicy(new IlvZoomToFitAction.RootActivityIntervalPolicy()); } /** * This function is called when the user wants to open an XML file. */ Override public void actionPerformed(ActionEvent event) { IlvGanttModel model = readXMLFile(); // Change the Gantt model of the Gantt chart. if (model != null) { IlvHierarchyChart chart = getChart(); // Set the chart to view the first 5% of the schedule before we bind // the data model to the chart. chart.setGanttModel(null); IlvTimeInterval interval = getZoomToFitAction().getIntervalPolicy().getInterval(model); IlvDuration duration = interval.getDuration().divide(20); Date start = IlvTimeUtil.subtract(interval.getStart(), duration.divide(10)); chart.setVisibleInterval(start, duration); chart.setGanttModel(createDBGanttModel(model)); } } } }