Package vicazh.hyperpool.stream

Source Code of vicazh.hyperpool.stream.IDefSelector

package vicazh.hyperpool.stream;

import java.awt.event.*;
import java.lang.reflect.*;
import java.util.*;
import javax.management.*;
import javax.swing.*;
import javax.swing.Timer;
import javax.swing.event.*;
import vicazh.hyperpool.*;

/**
* The graphic default selector
*
* @author Victor Zhigunov
* @version 0.4.9.3
*/
public class IDefSelector extends IValSelector implements DefSelectorMBean,
    DocumentListener {

  private JComboBox defBox;

  private ISelectorListModel defModel;

  private JTable ptable;

  private IPrioritiesModel pmodel;

  private JFormattedTextField textClient;

  private JFormattedTextField textServer;

  private JButton buttonOK;

  private JProgressBar bar;

  /**
   * @param interfaceClass
   *            interface class
   * @param name
   *            selector name
   * @param valModel
   *            combo box model for values
   * @param model
   *            selector table model
   * @param defBox
   *            combo box for default value
   * @param ptable
   *            priorities table
   * @param textClient
   *            client speed value field
   * @param textServer
   *            server speed value field
   * @param buttonOK
   *            OK button
   * @param bar
   *            progress bar
   */
  public IDefSelector(Class<?> interfaceClass, String name,
      ISelectorListModel valModel, ISelectorModel model,
      JComboBox defBox, JTable ptable, JFormattedTextField textClient,
      JFormattedTextField textServer, JButton buttonOK, JProgressBar bar) {
    super(interfaceClass, name, valModel, model);
    this.defBox = defBox;
    this.defModel = (ISelectorListModel) defBox.getModel();
    this.ptable = ptable;
    this.pmodel = (IPrioritiesModel) ptable.getModel();
    if (textClient != null)
      textClient.getDocument().addDocumentListener(this);
    this.textClient = textClient;
    if (textServer != null)
      textServer.getDocument().addDocumentListener(this);
    this.textServer = textServer;
    buttonOK.setEnabled(false);
    buttonOK.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        IDefSelector.this.buttonOK.setEnabled(false);
        Priorities list = (Priorities) getList();
        if (IDefSelector.this.textClient != null) {
          list.setClient((Double) IDefSelector.this.textClient
              .getValue());
          pmodel.clientsSpeed = (Double) IDefSelector.this.textClient
              .getValue();
        }
        if (IDefSelector.this.textServer != null) {
          list.setServer((Double) IDefSelector.this.textServer
              .getValue());
          pmodel.serversSpeed = (Double) IDefSelector.this.textServer
              .getValue();
        }
        setList(list);
      }
    });
    this.buttonOK = buttonOK;
    this.bar = bar;
  }

  /**
   * @param name
   *            selector name
   * @param valModel
   *            combo box model for values
   * @param model
   *            selector table model
   * @param defBox
   *            combo box for default value
   * @param ptable
   *            priorities table
   * @param textClient
   *            client speed value field
   * @param textServer
   *            server speed value field
   * @param buttonOK
   *            OK button
   * @param bar
   *            progress bar
   */
  public IDefSelector(String name, ISelectorListModel valModel,
      ISelectorModel model, JComboBox defBox, JTable ptable,
      JFormattedTextField textClient, JFormattedTextField textServer,
      JButton buttonOK, JProgressBar bar) {
    this(DefSelectorMBean.class, name, valModel, model, defBox, ptable,
        textClient, textServer, buttonOK, bar);
    updateUI();
  }

  public void added(int index) {
    super.added(index);
    defModel.insert(index);
    pmodel.insert(index);
  }

  public void removed(int index) {
    super.removed(index);
    defModel.remove(index);
    pmodel.remove(index);
  }

  protected void otherNotification(String type, Object value) {
    if (type.equals(SelectorMBean.DEF)) {
      defBox.setSelectedIndex((Integer) value);
      defBox.repaint();
    } else if (type.equals(ListSelectorMBean.LIST)) {
      if (textClient != null) {
        textClient.setValue(((Priorities) value).getClient());
        pmodel.clientsSpeed = ((Priorities) value).getClient();
      }
      if (textServer != null) {
        textServer.setValue(((Priorities) value).getServer());
        pmodel.serversSpeed = ((Priorities) value).getServer();
      }
      pmodel.fireTableDataChanged();
    }
    super.otherNotification(type, value);
  }

  public void insertUpdate(DocumentEvent e) {
    update();
  }

  public void removeUpdate(DocumentEvent e) {
    update();
  }

  public void changedUpdate(DocumentEvent e) {
    update();
  }

  private void update() {
    buttonOK.setEnabled(true);
  }

  public void updateUI() {
    bar.updateUI();
  }

  public List<PriorityItem> getItems() {
    try {
      return ((DefSelectorMBean) melement).getItems();
    } catch (UndeclaredThrowableException e) {
    }
    return null;
  }

  private Timer timer;

  protected void action() {
    if (!ptable.isShowing())
      return;
    pmodel.items = getItems();
    if (pmodel.items != null)
      for (int i = 0; i < pmodel.items.size(); i++) {
        pmodel.fireTableCellUpdated(i, 3);
        pmodel.fireTableCellUpdated(i, 4);
        pmodel.fireTableCellUpdated(i, 5);
        pmodel.fireTableCellUpdated(i, 6);
      }
  }

  public void connect(MBeanServerConnection mbsc) throws Exception {
    super.connect(mbsc);
    timer = new Timer(1000, new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        action();
      }
    });
    timer.start();
  }

  public void disconnect() throws Exception {
    super.disconnect();
    timer.stop();
  }

  public List<List<Object>> getList() {
    List<List<Object>> l = super.getList();
    if (textClient != null) {
      boolean b = false;
      for (Object o : l)
        if (((Priority) o).getClient() > 0) {
          b = true;
          break;
        }
      textClient.setEnabled(b);
      pmodel.clientsEnabled = b;
    }
    if (textServer != null) {
      boolean b = false;
      for (Object o : l)
        if (((Priority) o).getServer() > 0) {
          b = true;
          break;
        }
      textServer.setEnabled(b);
      pmodel.serversEnabled = b;
    }
    return l;
  }

}
TOP

Related Classes of vicazh.hyperpool.stream.IDefSelector

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.