Package org.snova.framework.shell.swing

Source Code of org.snova.framework.shell.swing.MainFrame

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/*
* MainFrame.java
*
* Created on 2010-8-13, 11:38:58
*/
package org.snova.framework.shell.swing;

import java.awt.AWTException;
import java.awt.Cursor;
import java.awt.Desktop;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.Proxy.Type;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.util.Collection;
import java.util.List;

import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.snova.framework.Snova;
import org.snova.framework.common.Constants;
import org.snova.framework.common.Version;
import org.snova.framework.config.SnovaConfiguration;
import org.snova.framework.shell.swing.gae.C4GUIHolder;
import org.snova.framework.shell.swing.gae.GAEGUIHolder;
import org.snova.framework.shell.swing.gae.SSHGUIHolder;
import org.snova.framework.shell.swing.gae.SpacGUIHolder;
import org.snova.framework.trace.Trace;
import org.snova.framework.util.PreferenceHelper;
import org.snova.framework.util.SharedObjectHelper;

/**
*
* @author wqy
*/
public class MainFrame extends javax.swing.JFrame
{

  /** Creates new form MainFrame */
  public MainFrame()
  {
    long start = System.currentTimeMillis();
    long end = System.currentTimeMillis();
    try
    {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      LookAndFeelInfo[] allFeels = UIManager.getInstalledLookAndFeels();
      for (LookAndFeelInfo feel : allFeels)
      {
        if (feel.getName().contains("Nimbus"))
        {
          UIManager.setLookAndFeel(feel.getClassName());
          break;
        }
      }
    }
    catch (Exception e)
    {
      logger.error("", e);
    }
    // end = System.currentTimeMillis();
    // System.out.println("Cost " + (end -start) + "ms");
    initComponents();
    // end = System.currentTimeMillis();
    // System.out.println("Cost " + (end -start) + "ms");
    fm = new Snova(new GUITrace());
    this.setTitle(Constants.PROJECT_NAME + " V" + Version.value);
    this.setIconImage(ImageUtil.FLAG.getImage());

    installPluginsUIPanel = new JPanel();
    availablePluginsUIPanel = new JPanel();
    installedPluginPanel.setViewportView(installPluginsUIPanel);
    availableUIPanel.setViewportView(availablePluginsUIPanel);
    installPluginsUIPanel.setLayout(new BoxLayout(installPluginsUIPanel,
            BoxLayout.PAGE_AXIS));
    availablePluginsUIPanel.setLayout(new BoxLayout(
            availablePluginsUIPanel, BoxLayout.PAGE_AXIS));

    installPluginsUIPanel.add(new InstalledPluginPanel(this,
            new GAEGUIHolder()));
    installPluginsUIPanel.add(new InstalledPluginPanel(this,
            new C4GUIHolder()));
    installPluginsUIPanel.add(new InstalledPluginPanel(this,
            new SpacGUIHolder()));
    //installPluginsUIPanel.add(new InstalledPluginPanel(this,
    //        new SSHGUIHolder()));
    // displayInstalledPlugins();
    jTabbedPane2.addChangeListener(new ChangeListener()
    {

      public void stateChanged(ChangeEvent e)
      {
        if (jTabbedPane2.getSelectedComponent() == installedPluginPanel)
        {
          displayInstalledPlugins();
        }
        else
        {
          displayAvailablePlugins();
        }
      }
    });
    // end = System.currentTimeMillis();
    // System.out.println("Cost " + (end -start) + "ms");

    SharedObjectHelper.getGlobalThreadPool().submit(new Runnable()
    {
      @Override
      public void run()
      {
        // jTabbedPane2.setSelectedIndex(0);
        displayInstalledPlugins();
        displayAvailablePlugins();
        new SysTray(MainFrame.this);
        if (Boolean.TRUE
                .toString()
                .equals(PreferenceHelper
                        .getPreference(FrameworkConfigDialog.AUTO_CONNECT)))
        {
          updateexecuteStatus();
        }
      }
    });

    end = System.currentTimeMillis();
    if (logger.isDebugEnabled())
    {
      logger.debug("Cost " + (end - start) + "ms to launch GUI frame.");
    }
  }

  private void displayAvailablePlugins()
  {
    availablePluginsUIPanel.removeAll();
    // try
    // {
    // ProductReleaseDetail release = getProductUpdateDetail();
    // List<PluginReleaseDetail> plugins = release.plugins;
    // for (PluginReleaseDetail plugin : plugins)
    // {
    // if (!pm.isPluginInstalled(plugin.name))
    // {
    // availablePluginsUIPanel.add(new AvalablePluginPanel(this,
    // plugin));
    // }
    //
    // }
    // }
    // catch (Exception ex)
    // {
    // logger.error("", ex);
    // }
  }

  private void displayInstalledPlugins()
  {
    // installPluginsUIPanel.removeAll();

  }

  /**
   * This method is called from within the constructor to initialize the form.
   * WARNING: Do NOT modify this code. The content of this method is always
   * regenerated by the Form Editor.
   */
  @SuppressWarnings("unchecked")
  // <editor-fold defaultstate="collapsed"
  // <editor-fold defaultstate="collapsed"
  // desc="Generated Code">//GEN-BEGIN:initComponents
  private void initComponents()
  {

    jTabbedPane1 = new javax.swing.JTabbedPane();
    jPanel1 = new javax.swing.JPanel();
    jScrollPane1 = new javax.swing.JScrollPane();
    statusTextArea = new javax.swing.JTextArea();
    jPanel2 = new javax.swing.JPanel();
    jTabbedPane2 = new javax.swing.JTabbedPane();
    installedPluginPanel = new javax.swing.JScrollPane();
    availableUIPanel = new javax.swing.JScrollPane();
    jPanel3 = new javax.swing.JPanel();
    javax.swing.JLabel appTitleLabel = new javax.swing.JLabel();
    javax.swing.JLabel appDescLabel = new javax.swing.JLabel();
    javax.swing.JLabel versionLabel = new javax.swing.JLabel();
    javax.swing.JLabel appVendorLabel = new javax.swing.JLabel();
    javax.swing.JLabel appVersionLabel = new javax.swing.JLabel();
    javax.swing.JLabel vendorLabel = new javax.swing.JLabel();
    javax.swing.JLabel homepageLabel = new javax.swing.JLabel();
    appHomepageLabel = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();
    executeButton = new javax.swing.JButton();
    exitButton = new javax.swing.JButton();
    jButton4 = new javax.swing.JButton();
    helpButton = new javax.swing.JButton();
    twitterLabel = new javax.swing.JLabel();
    statusLabel = new javax.swing.JLabel();

    setLocationByPlatform(true);
    setResizable(false);
    addWindowListener(new java.awt.event.WindowAdapter()
    {
      public void windowIconified(java.awt.event.WindowEvent evt)
      {
        formWindowIconified(evt);
      }
    });

    statusTextArea.setBackground(new java.awt.Color(0, 0, 0));
    statusTextArea.setColumns(20);
    statusTextArea.setEditable(false);
    statusTextArea.setForeground(new java.awt.Color(0, 204, 0));
    statusTextArea.setRows(5);
    jScrollPane1.setViewportView(statusTextArea);

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(
            jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(
            javax.swing.GroupLayout.Alignment.LEADING).addComponent(
            jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 374,
            Short.MAX_VALUE));
    jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(
            javax.swing.GroupLayout.Alignment.LEADING).addComponent(
            jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING,
            javax.swing.GroupLayout.DEFAULT_SIZE, 249, Short.MAX_VALUE));

    jTabbedPane1.addTab("Status", ImageUtil.SPEAKER, jPanel1);

    installedPluginPanel
            .setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    jTabbedPane2.addTab("Installed", installedPluginPanel);
    jTabbedPane2.addTab("Available", availableUIPanel);

    javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(
            jPanel2);
    jPanel2.setLayout(jPanel2Layout);
    jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(
            javax.swing.GroupLayout.Alignment.LEADING).addComponent(
            jTabbedPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 374,
            Short.MAX_VALUE));
    jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(
            javax.swing.GroupLayout.Alignment.LEADING).addComponent(
            jTabbedPane2, javax.swing.GroupLayout.Alignment.TRAILING,
            javax.swing.GroupLayout.DEFAULT_SIZE, 249, Short.MAX_VALUE));

    jTabbedPane1.addTab("Plugins", ImageUtil.PLUGIN, jPanel2);

    appTitleLabel.setFont(appTitleLabel.getFont().deriveFont(
            appTitleLabel.getFont().getStyle() | java.awt.Font.BOLD,
            appTitleLabel.getFont().getSize() + 4));
    appTitleLabel.setText("Snova GUI Launcher");

    appDescLabel.setText("<html>The GUI launcher of snova");

    versionLabel.setFont(versionLabel.getFont().deriveFont(
            versionLabel.getFont().getStyle() | java.awt.Font.BOLD));
    versionLabel.setText("Product Version:");

    appVendorLabel.setText("yinqiwen@gmail.com");

    appVersionLabel.setText(Version.value);

    vendorLabel.setFont(vendorLabel.getFont().deriveFont(
            vendorLabel.getFont().getStyle() | java.awt.Font.BOLD));
    vendorLabel.setText("Vendor:");

    homepageLabel.setFont(homepageLabel.getFont().deriveFont(
            homepageLabel.getFont().getStyle() | java.awt.Font.BOLD));
    homepageLabel.setText("Home:");

    appHomepageLabel
            .setText("<html><font color=\"Blue\"> <u>snova.googlecode.com</u></font></html>");
    appHomepageLabel.addMouseListener(new java.awt.event.MouseAdapter()
    {
      public void mouseClicked(java.awt.event.MouseEvent evt)
      {
        appHomepageLabelMouseClicked(evt);
      }
    });
    appHomepageLabel
            .addMouseMotionListener(new java.awt.event.MouseMotionAdapter()
            {
              public void mouseMoved(java.awt.event.MouseEvent evt)
              {
                appHomepageLabelMouseMoved(evt);
              }
            });

    jLabel2.setIcon(ImageUtil.FLAG);

    javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(
            jPanel3);
    jPanel3.setLayout(jPanel3Layout);
    jPanel3Layout
            .setHorizontalGroup(jPanel3Layout
                    .createParallelGroup(
                            javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(
                            javax.swing.GroupLayout.Alignment.TRAILING,
                            jPanel3Layout
                                    .createSequentialGroup()
                                    .addContainerGap(160, Short.MAX_VALUE)
                                    .addGroup(
                                            jPanel3Layout
                                                    .createParallelGroup(
                                                            javax.swing.GroupLayout.Alignment.LEADING)
                                                    .addGroup(
                                                            jPanel3Layout
                                                                    .createSequentialGroup()
                                                                    .addComponent(
                                                                            homepageLabel)
                                                                    .addGap(1,
                                                                            1,
                                                                            1)
                                                                    .addComponent(
                                                                            appHomepageLabel,
                                                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                                                    .addGroup(
                                                            jPanel3Layout
                                                                    .createSequentialGroup()
                                                                    .addComponent(
                                                                            vendorLabel)
                                                                    .addPreferredGap(
                                                                            javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                                    .addComponent(
                                                                            appVendorLabel))
                                                    .addGroup(
                                                            jPanel3Layout
                                                                    .createSequentialGroup()
                                                                    .addComponent(
                                                                            versionLabel)
                                                                    .addPreferredGap(
                                                                            javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                                    .addComponent(
                                                                            appVersionLabel))
                                                    .addComponent(
                                                            appDescLabel,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                                    .addComponent(
                                                            appTitleLabel))
                                    .addGap(36, 36, 36))
                    .addGroup(
                            jPanel3Layout
                                    .createParallelGroup(
                                            javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(
                                            jPanel3Layout
                                                    .createSequentialGroup()
                                                    .addGap(12, 12, 12)
                                                    .addComponent(jLabel2)
                                                    .addContainerGap(362,
                                                            Short.MAX_VALUE))));
    jPanel3Layout
            .setVerticalGroup(jPanel3Layout
                    .createParallelGroup(
                            javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(
                            jPanel3Layout
                                    .createSequentialGroup()
                                    .addGap(49, 49, 49)
                                    .addComponent(appTitleLabel)
                                    .addPreferredGap(
                                            javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(
                                            appDescLabel,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGap(18, 18, 18)
                                    .addGroup(
                                            jPanel3Layout
                                                    .createParallelGroup(
                                                            javax.swing.GroupLayout.Alignment.BASELINE)
                                                    .addComponent(
                                                            versionLabel)
                                                    .addComponent(
                                                            appVersionLabel))
                                    .addPreferredGap(
                                            javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                    .addGroup(
                                            jPanel3Layout
                                                    .createParallelGroup(
                                                            javax.swing.GroupLayout.Alignment.BASELINE)
                                                    .addComponent(
                                                            vendorLabel)
                                                    .addComponent(
                                                            appVendorLabel))
                                    .addPreferredGap(
                                            javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                    .addGroup(
                                            jPanel3Layout
                                                    .createParallelGroup(
                                                            javax.swing.GroupLayout.Alignment.BASELINE)
                                                    .addComponent(
                                                            homepageLabel)
                                                    .addComponent(
                                                            appHomepageLabel,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addContainerGap(75, Short.MAX_VALUE))
                    .addGroup(
                            jPanel3Layout
                                    .createParallelGroup(
                                            javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(
                                            jPanel3Layout
                                                    .createSequentialGroup()
                                                    .addGap(20, 20, 20)
                                                    .addComponent(
                                                            jLabel2,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                                            191,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                                    .addContainerGap(38,
                                                            Short.MAX_VALUE))));

    jTabbedPane1.addTab("About", ImageUtil.ABOUT, jPanel3);

    executeButton.setIcon(ImageUtil.START);
    executeButton.setText("Start");
    executeButton.addActionListener(new java.awt.event.ActionListener()
    {
      public void actionPerformed(java.awt.event.ActionEvent evt)
      {
        executeButtonActionPerformed(evt);
      }
    });

    exitButton.setIcon(ImageUtil.EXIT);
    exitButton.setText("Exit");
    exitButton.addActionListener(new java.awt.event.ActionListener()
    {
      public void actionPerformed(java.awt.event.ActionEvent evt)
      {
        exitButtonActionPerformed(evt);
      }
    });

    jButton4.setIcon(ImageUtil.CONFIG);
    jButton4.setText("Config");
    jButton4.addActionListener(new java.awt.event.ActionListener()
    {
      public void actionPerformed(java.awt.event.ActionEvent evt)
      {
        jButton4ActionPerformed(evt);
      }
    });

    helpButton.setIcon(ImageUtil.HELP);
    helpButton.setText("Help");
    helpButton.addActionListener(new java.awt.event.ActionListener()
    {
      public void actionPerformed(java.awt.event.ActionEvent evt)
      {
        helpButtonActionPerformed(evt);
      }
    });

    twitterLabel.setIcon(ImageUtil.TWITTER);
    twitterLabel
            .setText("<html><font color=\"Blue\"> <u>@yinqiwen</u></font></html>");
    twitterLabel.addMouseListener(new java.awt.event.MouseAdapter()
    {
      public void mouseClicked(java.awt.event.MouseEvent evt)
      {
        twitterLabelMouseClicked(evt);
      }
    });
    twitterLabel
            .addMouseMotionListener(new java.awt.event.MouseMotionAdapter()
            {
              public void mouseMoved(java.awt.event.MouseEvent evt)
              {
                twitterLabelMouseMoved(evt);
              }
            });

    statusLabel.setText("Idle");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
            getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(layout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(
                    layout.createSequentialGroup()
                            .addContainerGap()
                            .addGroup(
                                    layout.createParallelGroup(
                                            javax.swing.GroupLayout.Alignment.LEADING)
                                            .addGroup(
                                                    layout.createSequentialGroup()
                                                            .addComponent(
                                                                    jTabbedPane1,
                                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                    379,
                                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                                                            .addPreferredGap(
                                                                    javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                            .addGroup(
                                                                    layout.createParallelGroup(
                                                                            javax.swing.GroupLayout.Alignment.LEADING)
                                                                            .addComponent(
                                                                                    jButton4,
                                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                    99,
                                                                                    Short.MAX_VALUE)
                                                                            .addComponent(
                                                                                    helpButton,
                                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                    99,
                                                                                    Short.MAX_VALUE)
                                                                            .addComponent(
                                                                                    exitButton,
                                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                    99,
                                                                                    Short.MAX_VALUE)
                                                                            .addComponent(
                                                                                    executeButton,
                                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                    99,
                                                                                    Short.MAX_VALUE)))
                                            .addGroup(
                                                    layout.createSequentialGroup()
                                                            .addComponent(
                                                                    twitterLabel)
                                                            .addGap(18, 18,
                                                                    18)
                                                            .addComponent(
                                                                    statusLabel,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    406,
                                                                    Short.MAX_VALUE)))
                            .addContainerGap()));
    layout.setVerticalGroup(layout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(
                    layout.createSequentialGroup()
                            .addGroup(
                                    layout.createParallelGroup(
                                            javax.swing.GroupLayout.Alignment.LEADING)
                                            .addGroup(
                                                    layout.createSequentialGroup()
                                                            .addContainerGap()
                                                            .addComponent(
                                                                    jTabbedPane1)
                                                            .addPreferredGap(
                                                                    javax.swing.LayoutStyle.ComponentPlacement.RELATED))
                                            .addGroup(
                                                    layout.createSequentialGroup()
                                                            .addGap(55, 55,
                                                                    55)
                                                            .addComponent(
                                                                    executeButton)
                                                            .addGap(40, 40,
                                                                    40)
                                                            .addComponent(
                                                                    jButton4)
                                                            .addGap(39, 39,
                                                                    39)
                                                            .addComponent(
                                                                    helpButton)
                                                            .addGap(41, 41,
                                                                    41)
                                                            .addComponent(
                                                                    exitButton)
                                                            .addGap(27, 27,
                                                                    27)))
                            .addGroup(
                                    layout.createParallelGroup(
                                            javax.swing.GroupLayout.Alignment.BASELINE)
                                            .addComponent(twitterLabel)
                                            .addComponent(statusLabel))
                            .addContainerGap()));

    pack();
  }// </editor-fold>//GEN-END:initComponents

  public void exit()
  {
    System.exit(1);
  }

  private void exitButtonActionPerformed(java.awt.event.ActionEvent evt)
  {// GEN-FIRST:event_exitButtonActionPerformed
    exit();
  }// GEN-LAST:event_exitButtonActionPerformed

  private void formWindowIconified(java.awt.event.WindowEvent evt)
  {// GEN-FIRST:event_formWindowIconified
    setVisible(false);
  }// GEN-LAST:event_formWindowIconified

  private void helpButtonActionPerformed(java.awt.event.ActionEvent evt)
  {// GEN-FIRST:event_helpButtonActionPerformed
    go2Webpage(Constants.OFFICIAL_SITE);
  }// GEN-LAST:event_helpButtonActionPerformed

  private void twitterLabelMouseClicked(java.awt.event.MouseEvent evt)
  {// GEN-FIRST:event_twitterLabelMouseClicked
    go2Webpage(Constants.OFFICIAL_TWITTER);
  }// GEN-LAST:event_twitterLabelMouseClicked

  private void twitterLabelMouseMoved(java.awt.event.MouseEvent evt)
  {// GEN-FIRST:event_twitterLabelMouseMoved
    evt.getComponent().setCursor(
            Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
  }// GEN-LAST:event_twitterLabelMouseMoved

  private void appHomepageLabelMouseClicked(java.awt.event.MouseEvent evt)
  {// GEN-FIRST:event_appHomepageLabelMouseClicked
    go2Webpage(Constants.OFFICIAL_SITE);
  }// GEN-LAST:event_appHomepageLabelMouseClicked

  private void appHomepageLabelMouseMoved(java.awt.event.MouseEvent evt)
  {// GEN-FIRST:event_appHomepageLabelMouseMoved
    evt.getComponent().setCursor(
            Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
  }// GEN-LAST:event_appHomepageLabelMouseMoved

  private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
  {// GEN-FIRST:event_jButton4ActionPerformed
    getConfigDialog().start();
  }// GEN-LAST:event_jButton4ActionPerformed

  private void updateexecuteStatus()
  {
    if (!hasStarted)
    {
      statusLabel.setText("Starting...");
      executeButton.setText("Stop");
      executeButton.setIcon(ImageUtil.STOP);
      hasStarted = true;
      SharedObjectHelper.getGlobalThreadPool().submit(new Runnable()
      {
        public void run()
        {
          fm.start();
        }
      });
    }
    else
    {
      statusLabel.setText("Stopped");
      executeButton.setText("Start");
      executeButton.setIcon(ImageUtil.START);
      hasStarted = false;
      SharedObjectHelper.getGlobalThreadPool().submit(new Runnable()
      {
        public void run()
        {
          fm.stop();
        }
      });
    }
  }

  private void executeButtonActionPerformed(java.awt.event.ActionEvent evt)
  {// GEN-FIRST:event_executeButtonActionPerformed
    updateexecuteStatus();
  }// GEN-LAST:event_executeButtonActionPerformed

  public void go2Webpage(String site)
  {
    try
    {
      Desktop desktop = Desktop.getDesktop();
      desktop.browse(new URI(site));
    }
    catch (Exception e)
    {
      logger.error("Failed to go to web site!", e);
    }

  }

  /**
   * @param args
   *            the command line arguments
   */
  public static void main(String args[])
  {
    java.awt.EventQueue.invokeLater(new Runnable()
    {
      public void run()
      {
        new MainFrame().setVisible(true);
      }
    });
  }

  private FrameworkConfigDialog getConfigDialog()
  {
    if (null == config)
    {
      config = new FrameworkConfigDialog(this, true);
    }
    return config;
  }

  // Variables declaration - do not modify//GEN-BEGIN:variables
  private javax.swing.JLabel appHomepageLabel;
  private javax.swing.JScrollPane availableUIPanel;
  private javax.swing.JButton executeButton;
  private javax.swing.JButton exitButton;
  private javax.swing.JButton helpButton;
  private javax.swing.JScrollPane installedPluginPanel;
  private javax.swing.JButton jButton4;
  private javax.swing.JLabel jLabel2;
  private javax.swing.JPanel jPanel1;
  private javax.swing.JPanel jPanel2;
  private javax.swing.JPanel jPanel3;
  private javax.swing.JScrollPane jScrollPane1;
  private javax.swing.JTabbedPane jTabbedPane1;
  private javax.swing.JTabbedPane jTabbedPane2;
  private javax.swing.JLabel statusLabel;
  private javax.swing.JTextArea statusTextArea;
  private javax.swing.JLabel twitterLabel;
  // End of variables declaration//GEN-END:variables
  private JPanel installPluginsUIPanel;
  private JPanel availablePluginsUIPanel;
  private boolean hasStarted = false;
  private FrameworkConfigDialog config;
  private Snova fm;
  protected static Logger logger = LoggerFactory.getLogger(MainFrame.class);
  Trace trace = new GUITrace();

  class GUITrace implements Trace
  {

    public void info(final String string)
    {
      statusTextArea.append(string);
      statusTextArea.append(System.getProperty("line.separator"));
      statusLabel.setText(string);
    }

    public void error(final String string)
    {
      statusTextArea.append(string);
      statusTextArea.append(System.getProperty("line.separator"));
      statusLabel.setText(string);
    }

    public void notice(final String string)
    {
      statusTextArea.append(string);
      statusTextArea.append(System.getProperty("line.separator"));

    }
  }
}
TOP

Related Classes of org.snova.framework.shell.swing.MainFrame

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.