package application;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import javax.swing.JFrame;
import com.mxgraph.model.mxGeometry;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.swing.handler.mxRubberband;
import com.mxgraph.view.mxGraph;
import application.editor.Editor;
import application.views.NavigationWindow;
import application.views.controlFlowDelegation.FlowLayerWindow;
/**
* Application main window
*
* @author Nitta Lab.
*
*/
public class ApplicationWindow extends JFrame {
private static final long serialVersionUID = -8690140317781055614L;
public static final String title = "Visual Modeling Tool";
public static final Logger logger = Logger.getLogger("dtram");
private Editor editor = null;
private mxGraph graph = null;
private mxGraphComponent graphComponent = null;
private ApplicationMenuBar menuBar = null;
private NavigationWindow navigationWindow = null;
private FlowLayerWindow showFlowLayerWindow = null;
public ApplicationWindow() {
setTitle(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
Handler fh = new FileHandler("dtram.log", true);
fh.setFormatter(new SimpleFormatter());
logger.addHandler(fh);
} catch (SecurityException | IOException e) {
e.printStackTrace();
}
logger.setLevel(Level.INFO);
logger.log(Level.INFO, "launched");
// If you want to change the language, change here.
ApplicationLanguage.getInstance().setLocaleLanguage(ApplicationLanguage.JP);
this.graph = new mxGraph() {
public boolean isPort(Object cell) {
mxGeometry geo = getCellGeometry(cell);
return (geo != null) ? geo.isRelative() : false;
}
public boolean isCellFoldable(Object cell, boolean collapse) {
return false;
}
};
this.graphComponent = new mxGraphComponent(graph);
this.editor = new Editor(graphComponent);
getContentPane().add(graphComponent);
new mxRubberband(graphComponent);
graph.setAllowDanglingEdges(false);
graph.setCellsDisconnectable(true);
graph.setDropEnabled(false);
menuBar = new ApplicationMenuBar(this);
setJMenuBar(menuBar);
setSize(870, 640);
navigationWindow = new NavigationWindow(this, editor);
navigationWindow.setVisible(true);
showFlowLayerWindow = new FlowLayerWindow(this);
showFlowLayerWindow.setVisible(false);
editor.addStageChangeListener(navigationWindow);
editor.addStageChangeListener(showFlowLayerWindow);
}
public mxGraph getGraph() {
return graph;
}
public mxGraphComponent getGraphComponent() {
return graphComponent;
}
public Editor getEditor() {
return editor;
}
public void setEditor(Editor editor) {
this.editor = editor;
}
public void showNavigationWindow() {
navigationWindow.setVisible(true);
}
public void showSwitchLayerWindow() {
showFlowLayerWindow.setVisible(true);
}
}