package tr.gov.ulakbim.jDenetX.gui.visualization; import weka.core.Instances; import weka.core.Memory; import weka.gui.LookAndFeel; import weka.gui.explorer.Explorer; import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; /** * @author jansen * <p/> * Copy of main() from weka.gui.Explorer to start the Explorer with the * processed data already loaded */ public class WekaExplorer { private static Explorer m_explorer; /** * for monitoring the Memory consumption */ private static Memory m_Memory = new Memory(true); public WekaExplorer(Instances instances) { weka.core.logging.Logger.log(weka.core.logging.Logger.Level.INFO, "Logging started"); LookAndFeel.setLookAndFeel(); try { // uncomment to disable the memory management: //m_Memory.setEnabled(false); m_explorer = new Explorer(); final JFrame jf = new JFrame("Weka Explorer"); jf.getContentPane().setLayout(new BorderLayout()); jf.getContentPane().add(m_explorer, BorderLayout.CENTER); jf.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { jf.dispose(); } }); jf.pack(); jf.setSize(800, 600); jf.setVisible(true); Image icon = Toolkit.getDefaultToolkit(). getImage(ClassLoader.getSystemResource("weka/gui/weka_icon.gif")); jf.setIconImage(icon); if (instances != null) { m_explorer.getPreprocessPanel().setInstances(instances); } Thread memMonitor = new Thread() { public void run() { while (true) { try { //System.out.println("Before sleeping."); this.sleep(4000); System.gc(); if (m_Memory.isOutOfMemory()) { // clean up jf.dispose(); m_explorer = null; System.gc(); // stop threads m_Memory.stopThreads(); // display error System.err.println("\ndisplayed message:"); m_Memory.showOutOfMemory(); System.err.println("\nexiting"); System.exit(-1); } } catch (InterruptedException ex) { ex.printStackTrace(); } } } }; memMonitor.setPriority(Thread.MAX_PRIORITY); memMonitor.start(); } catch (Exception ex) { ex.printStackTrace(); System.err.println(ex.getMessage()); } } }