/*
* Licensed Materials - Property of Rogue Wave Software, Inc.
* © Copyright Rogue Wave Software, Inc. 2014, 2017
* © 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.
*/
import ilog.views.gantt.IlvGanttChart;
import ilog.views.gantt.IlvHierarchyChart;
import ilog.views.gantt.IlvScheduleChart;
import ilog.views.gantt.action.IlvZoomToFitAction;
import ilog.views.util.IlvProductUtil;
import ilog.views.util.styling.IlvStylingException;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
/**
* Load Project Example sample.
*/
public class LoadProject extends JPanel {
public IlvHierarchyChart chart;
private ProjectFileChooser fileChooser = new ProjectFileChooser();
{
// Set the initial directory of the fileChooser to a directory that contains
// some .igpr files.
fileChooser.setCurrentDirectory(new File("../../../bin/designer/data/examples/"));
}
// The zoom-to-fit action.
private IlvZoomToFitAction zoomToFitAction;
public LoadProject(JFrame frame) {
final JFrame parent = frame;
// Prepare the JPanel's appearance
setLayout(new BorderLayout());
JPanel panel = new JPanel();
// A button to perform loading a project file for Gantt.
Button buttonGantt = new Button("Designer File for Gantt...");
buttonGantt.addActionListener(new ActionListener() {
Override
public void actionPerformed(ActionEvent e) {
File file = fileChooser.showOpenDialog(parent);
if (file != null) {
// Get the URL of the file
URL url = null;
try {
url = file.toURI().toURL();
} catch (MalformedURLException e1) {
}
// Load the file
if (chart != null) {
remove(chart);
}
IlvGanttChart ganttChart = new IlvGanttChart();
try {
ganttChart.setProject(url);
} catch (IOException e1) {
JOptionPane.showMessageDialog(parent,
e1,
"Error",
JOptionPane.ERROR_MESSAGE);
} catch (IlvStylingException e1) {
JOptionPane.showMessageDialog(parent,
e1,
"Error",
JOptionPane.ERROR_MESSAGE);
}
chart = ganttChart;
zoomToFitAction = new IlvZoomToFitAction(chart, "", null, null, "", "");
add(BorderLayout.CENTER, chart);
chart.revalidate();
// Make sure the full chart is visible.
zoomToFit();
chart.expandAllRows();
}
}
});
panel.add(buttonGantt);
// A button to perform loading a project file for Schedule.
Button buttonSchedule = new Button("Designer File for Schedule...");
buttonSchedule.addActionListener(new ActionListener() {
Override
public void actionPerformed(ActionEvent e) {
File file = fileChooser.showOpenDialog(parent);
if (file != null) {
// Get the URL of the file
URL url = null;
try {
url = file.toURI().toURL();
} catch (MalformedURLException e1) {
}
// Load the file
if (chart != null) {
remove(chart);
}
IlvScheduleChart scheduleChart = new IlvScheduleChart();
try {
scheduleChart.setProject(url);
} catch (IOException e1) {
JOptionPane.showMessageDialog(parent,
e1,
"Error",
JOptionPane.ERROR_MESSAGE);
} catch (IlvStylingException e1) {
JOptionPane.showMessageDialog(parent,
e1,
"Error",
JOptionPane.ERROR_MESSAGE);
}
chart = scheduleChart;
zoomToFitAction = new IlvZoomToFitAction(chart, "", null, null, "", "");
add(BorderLayout.CENTER, chart);
chart.revalidate();
// Make sure the full chart is visible.
zoomToFit();
chart.expandAllRows();
}
}
});
panel.add(buttonSchedule);
add(BorderLayout.SOUTH, panel);
}
/**
* Zooms the chart to fit the data model's time interval.
*/
protected void zoomToFit() {
zoomToFitAction.perform();
}
public static void main(String[] args) {
// This sample uses JViews Gantt features. When deploying an
// application that includes this code, you need to be in possession
// of a Rogue Wave JViews Gantt Deployment license.
IlvProductUtil.DeploymentLicenseRequired(
IlvProductUtil.JViews_Gantt_Deployment);
SwingUtilities.invokeLater(new Runnable() {
Override
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(10, 400, 700, 400);
LoadProject example = new LoadProject(frame);
frame.getContentPane().add(example);
frame.setVisible(true);
}
});
}
}