// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
package graphtea.plugins.main.core;
import graphtea.graph.graph.GraphColoring;
import graphtea.graph.graph.IndSubGraphs;
import graphtea.graph.graph.RenderTable;
import graphtea.graph.graph.SubGraph;
import graphtea.graph.old.ArrowHandler;
import graphtea.graph.old.GShape;
import graphtea.graph.old.GStroke;
import graphtea.graph.old.PolygonArrow;
import graphtea.platform.Application;
import graphtea.platform.StaticUtils;
import graphtea.platform.core.BlackBoard;
import graphtea.platform.core.Listener;
import graphtea.platform.core.exception.ExceptionHandler;
import graphtea.platform.preferences.lastsettings.StorableOnExit;
import graphtea.plugins.main.ui.*;
import graphtea.ui.UI;
import graphtea.ui.UIUtils;
import graphtea.ui.components.GFrame;
import graphtea.ui.components.gpropertyeditor.editors.inplace.GSimpleComboEditor;
import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.URL;
/**
* @author Reza Mohammadi, azin
*/
public class Init implements graphtea.platform.plugin.PluginInterface, StorableOnExit {
public static Class uiClass = null;
public void init(final BlackBoard blackboard) {
try {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
ExceptionHandler.catchException(e);
}
UI ui = new UI(blackboard);
blackboard.addListener(Application.POST_INIT_EVENT, new Listener() {
public void keyChanged(String key, Object value) {
GFrame frame = UIUtils.getGFrame(blackboard);
URL resource = getClass().getResource("/images/Icon.ICO");
if (resource != null) {
ImageIcon icon = new ImageIcon(resource);
frame.setIconImage(icon.getImage());
}
frame.validate();
UIUtils.getGFrame(blackboard).setVisible(true);
}
});
ui.loadXML("/graphtea/plugins/main/core/SampleUI.xml", getClass());
UIUtils.registerRenderer(PolygonArrow.class, new ArrowRenderer());
UIUtils.registerEditor(PolygonArrow.class, new ArrowEditor());
UIUtils.registerRenderer(GShape.class, new GShapeRenderer());
UIUtils.registerRenderer(GStroke.class, new GStrokeRenderer());
UIUtils.registerEditor(GStroke.class, new GStrokeEditor());
UIUtils.registerEditor(GShape.class, new GSimpleComboEditor(new GShapeRenderer()));
UIUtils.registerRenderer(SubGraph.class, new SubGraphRenderer());
UIUtils.registerRenderer(RenderTable.class,new TableRenderer());
UIUtils.registerRenderer(IndSubGraphs.class,new IndSetColoringRenderer());
UIUtils.registerRenderer(GraphColoring.class, new GraphColoringRenderer());
StaticUtils.setFromStringProvider(PolygonArrow.class.getName(), new ArrowHandler());
graphtea.ui.components.GFrame gFrame = UIUtils.getGFrame(blackboard);
gFrame.setTitle("GraphTea "+Application.VERSION_NAME+" "+Application.VERSION);
gFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
if (JOptionPane.showConfirmDialog(null, "Do you want to exit?",
"Application Exiting...", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
try {
graphtea.plugins.main.Init.track("App", "Closed");
SETTINGS.saveSettings();
} catch (Exception e1) {
e1.printStackTrace();
}
System.exit(0);
}
}
});
} catch (Exception e) {
ExceptionHandler.catchException(e);
}
}
}