Package org.apache.felix.mosgi.managedelements.bundlesprobes.tab

Source Code of org.apache.felix.mosgi.managedelements.bundlesprobes.tab.BundlesProbesTabUI

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*    http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.   
*/
package org.apache.felix.mosgi.managedelements.bundlesprobes.tab;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.management.MBeanServerConnection;
import java.awt.Component;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.TableColumn;

import org.apache.felix.mosgi.console.ifc.Plugin;

import java.beans.PropertyChangeEvent;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;

public class BundlesProbesTabUI extends JPanel implements BundleActivator, ActionListener, Plugin {
  private JTable table;

  private JTextField urlTextField;
  private JButton installButton;
  private JButton startButton;
  private JButton stopButton;
  private JButton updateButton;
  private JButton refreshButton;
  private JButton uninstallButton;

  private BundlesProbesModelTabUI panelModel = null;
  private BundleContext m_context=null;
  private ServiceRegistration sreg = null;
  private MBeanServerConnection mbsc=null;

  ///////////////////////////////////////////
  //           BundleActivator             //
  ///////////////////////////////////////////
  public void start(BundleContext context) {
    m_context = context;
    this.registerServicePlugin();
  }
 
  public void stop(BundleContext context) {
  }

  ///////////////////////////////////////////////
  //               Plugin                      //
  ///////////////////////////////////////////////
  public void registerServicePlugin(){
    sreg = m_context.registerService(Plugin.class.getName(), this, null);
  }

  public void unregisterServicePlugin(){
    sreg.unregister();
  }

  public String pluginLocation(){
    return m_context.getBundle().getLocation();
  }
  public String getName(){ return "Bundles List"; }
  public Component getGUI(){ return this; }
  public void propertyChange(PropertyChangeEvent ee){
    String action=ee.getPropertyName();
    if (action.equals(Plugin.NEW_NODE_READY)){
      this.mbsc=(MBeanServerConnection)ee.getNewValue();
    }else if(action.equals(Plugin.EMPTY_NODE)){
      panelModel.emptyPanel();
      this.mbsc=null;
    }else if(action.equals(Plugin.PLUGIN_ACTIVATED) && ee.getNewValue().equals(this.getName())){
      try {
        panelModel.createBundleList(this.mbsc);
        invalidate();
        validate();
      } catch (Exception ex) {
        ex.printStackTrace();
      }
    }
  }

  public BundlesProbesTabUI() throws Exception {
    panelModel = new BundlesProbesModelTabUI();
    setLayout(new BorderLayout());
    add(createInstallPanel(), BorderLayout.NORTH);
    add(createTablePanel(), BorderLayout.CENTER);
    add(createMgmntButtonsPanel(), BorderLayout.SOUTH);
  }

  private void initColumnSizes(JTable table) {
    TableColumn column = null;
    for (int i = 0; i < 3; i++) {
      column = table.getColumnModel().getColumn(i);
      if ((i == 0) || (i == 1))
        column.setPreferredWidth(5);
      if (i == 2)
        column.setPreferredWidth(200);
    }
  }

  private JPanel createInstallPanel() {
    JPanel installPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 5));
    installPanel.setBorder(BorderFactory.createEtchedBorder());
    installPanel.add(new JLabel("URL: "), BorderLayout.WEST);

    urlTextField = new JTextField(35);
    urlTextField.addActionListener(this);
    installPanel.add(urlTextField, BorderLayout.CENTER);

    installButton = new JButton("Install");
    installButton.setMnemonic('I');
    installButton.addActionListener(this);
    installPanel.add(installButton, BorderLayout.EAST);
    return installPanel;
  }

  private JScrollPane createTablePanel() {
    table = new JTable(panelModel);
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    table.getTableHeader().setReorderingAllowed(false);
    initColumnSizes(table);
    JScrollPane tablePanel = new JScrollPane(table);
    tablePanel.setBorder(BorderFactory.createEtchedBorder());
    return tablePanel;
  }

  private JPanel createMgmntButtonsPanel() {
    JPanel mgmntButtonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 5));
    mgmntButtonsPanel.setBorder(BorderFactory.createEtchedBorder());
    startButton = new MyButton('S', "Start", this, mgmntButtonsPanel);
    stopButton = new MyButton('p', "Stop", this, mgmntButtonsPanel);
    updateButton = new MyButton('a', "Update", this, mgmntButtonsPanel);
    refreshButton = new MyButton('R', "Refresh", this, mgmntButtonsPanel);
    uninstallButton = new MyButton('U', "Uninstall", this, mgmntButtonsPanel);
    return mgmntButtonsPanel;
  }

  public void actionPerformed(ActionEvent e) {
    Object object = e.getSource();
    if ((object == installButton) || (object == urlTextField)) {
      try {
        String jarPath = urlTextField.getText();
        jarPath = jarPath.trim();
        panelModel.installButtonAction(jarPath);
      } catch (Exception ex) {
        JOptionPane.showMessageDialog(this, ex.getClass().getName(),
            "Install Error", JOptionPane.ERROR_MESSAGE);
      }
    } else if (object == startButton) {
      try {
        panelModel.startButtonAction((Long) (table.getValueAt(table
            .getSelectedRow(), 0)));
      } catch (Exception ex) {
        JOptionPane.showMessageDialog(this, ex.getClass().getName(),
            "Start Error", JOptionPane.ERROR_MESSAGE);
      }
    } else if (object == stopButton) {
      try {
        panelModel.stopButtonAction((Long) (table.getValueAt(table
            .getSelectedRow(), 0)));
      } catch (Exception ex) {
        /*
        JOptionPane.showMessageDialog(this, ex.getClass().getName(),
            "Stop Error", JOptionPane.ERROR_MESSAGE);
            */
        ex.printStackTrace();
      }
    } else if (object == updateButton) {
      try {
        panelModel.updateButtonAction((Long) (table.getValueAt(table
            .getSelectedRow(), 0)));
      } catch (Exception ex) {
        JOptionPane.showMessageDialog(this, ex.getClass().getName(),
            "Update Error", JOptionPane.ERROR_MESSAGE);
      }
    } else if (object == refreshButton) {
      try {
        panelModel.refreshButtonAction();
      } catch (Exception ex) {
        JOptionPane.showMessageDialog(this, ex.getClass().getName(),
            "Refresh Error", JOptionPane.ERROR_MESSAGE);
      }
    } else if (object == uninstallButton) {
      try {
        panelModel.uninstallButtonAction((Long) (table.getValueAt(table
            .getSelectedRow(), 0)));
      } catch (Exception ex) {
        JOptionPane.showMessageDialog(this, ex.getClass().getName(),
            "Uninstall Error", JOptionPane.ERROR_MESSAGE);
      }
    }
  }

static class MyButton extends JButton {
    private int W = 85;
    private int H = 25;

    public MyButton(char c, String name, BundlesProbesTabUI listener, JPanel panel) {
      super.setText(name);
      super.setMnemonic(c);
      super.setMinimumSize(new Dimension(W, H));
      super.setPreferredSize(new Dimension(W, H));
      super.setMaximumSize(new Dimension(W, H));
      super.addActionListener(listener);
      panel.add(this);
    }
  }
}
TOP

Related Classes of org.apache.felix.mosgi.managedelements.bundlesprobes.tab.BundlesProbesTabUI

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.