/* * 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 css; import ilog.views.gantt.IlvGanttModel; import ilog.views.gantt.model.general.IlvGeneralActivity; import ilog.views.gantt.model.general.IlvGeneralConstraint; import ilog.views.gantt.model.general.IlvGeneralReservation; import ilog.views.gantt.model.general.IlvGeneralResource; import ilog.views.schedule.IlvResourceDataChart; import ilog.views.util.IlvProductUtil; import ilog.views.util.styling.IlvStylable; import shared.AbstractExample; import shared.data.SimpleEngineeringProject; import shared.swing.CSSComboBox; import shared.swing.CustomizerPanel; import shared.swing.ExampleFrame; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import javax.swing.JComponent; import javax.swing.SwingUtilities; /** * This example illustrates how to style a Resource Data chart with CSS. * @proofread */ public class ResourceDataCSSExample extends AbstractExample { /** * The directory containing the data files (css+xml). */ static final String DATA_DIRECTORY = "data"; /** * The name of the default data file. */ static final String DEFAULT_DATA_FILE = "data.xml"; /** * The sample CSS files. Used in applets. */ static final String[] CSS_FILES = { "summer" }; /** * The chart. */ private IlvResourceDataChart chart; { // This sample uses JViews Gantt features. When deploying an // application that includes this code, you need to be in possession // of a Perforce JViews Gantt Deployment license. IlvProductUtil.DeploymentLicenseRequired( IlvProductUtil.JViews_Gantt_Deployment); } /** * Initializes the example's user interface in the specified container. * * @param container The container that the example is running in. This will * be the <code>contentPane</code> of the <code>JApplet</code> or the * <code>JFrame</code>, depending on whether the example is run as an applet * or as an application. */ Override public void init(Container container) { super.init(container); container.setLayout(new BorderLayout()); // Create the chart. chart = createChart(); setHelpID(chart, "Chart.helpID"); // Create and bind the Gantt data model. final IlvGanttModel model = createGanttModel(); chart.setGanttModel(model); // Add the chart to the ui. chart.setPreferredSize(new Dimension(550, 230)); container.add(chart, BorderLayout.CENTER); JComponent cssPanel = createCSSCustomizer(); container.add(cssPanel, BorderLayout.LINE_END); // Override the default behavior which maintains a constant zoom factor // instead to maintain fit-to-content container.addComponentListener(new ComponentAdapter() { Override public void componentResized(ComponentEvent e) { chart.setVisibleInterval(model.getRootActivity().getStartTime(), model.getRootActivity().getTimeInterval().getDuration()); } }); } /** * Creates the Resource Data chart. * * @return The resource data chart. */ protected IlvResourceDataChart createChart() { IlvResourceDataChart chart = new IlvResourceDataChart(); // Set the debug mask for CSS. chart.setStyleSheetDebugMask(IlvStylable.BAD_CLASS_MASK | IlvStylable.BAD_PROP_MASK | IlvStylable.WARNING_PROP_MASK | IlvStylable.FAILED_CONVERSIONS_MASK); // The style sheets provided with the sample enable the chart legend to // be movable. We set the default state to be the same. This prevents // the user from dragging the legend to float above the chart, disable // styling, and then be unable to move the legend out of the way. chart.getLegend().setMovable(true); return chart; } /** * Creates and returns the Gantt data model. * * @return The Gantt data model. */ protected IlvGanttModel createGanttModel() { return new SimpleEngineeringProject(new IlvGeneralActivity.Factory(), new IlvGeneralResource.Factory(), new IlvGeneralConstraint.Factory(), new IlvGeneralReservation.Factory()); } // ========================================= // CSS // ========================================= /** * Creates and returns a customizer for applying and viewing style sheets. * * @return The CSS customizer. */ protected JComponent createCSSCustomizer() { CustomizerPanel panel = new CustomizerPanel(); panel.addHeading("Style Sheet"); // Create a JComboBox containing all the available .css files. CSSComboBox cssCombo = new CSSComboBox(this, chart, DATA_DIRECTORY, getCSSFiles()); panel.add(cssCombo); return panel; } /** * This method returns the list of CSS files used in an applet. * * @return The list of CSS files. */ protected String[] getCSSFiles() { return CSS_FILES; } /** * This method is overridden to disable the view * customizer for this demo. * * @return <code>null</code> to disable the view customizer. */ protected JComponent createViewCustomizer() { return null; } // ========================================= // Example Application // ========================================= /** * Returns the title of the sample. * * @return The title of the example. */ Override public String getTitle() { return "Resource Data Chart CSS Sample"; } /** * Application mainline. * * @param args The command line arguments. */ public static void main (String[] args) { ExampleFrame.createAndShowGUI(ResourceDataCSSExample.class); } }