Package cli_fmw.report.panels.model

Source Code of cli_fmw.report.panels.model.ObjectChekBoxModel

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

package cli_fmw.report.panels.model;

import cli_fmw.main.ClipsException;
import cli_fmw.main.ContentStateListener;
import cli_fmw.utils.MessageBox;
import java.awt.AWTEvent;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.ButtonGroup;
import javax.swing.ButtonModel;
import javax.swing.JCheckBox;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList;

/**
*
* @param <T>
* @author finder
*/
public abstract class ObjectChekBoxModel<T> implements ContentStateListener, ButtonModel{
  static final long        serialVersionUID = 1L;
  ButtonGroup            group;
  T                object;
  boolean              pressed;
  boolean              enabled = true;
  boolean              armed;
  boolean              rollover;
  int                mnemonic;
  private String          actionCommand;

  protected EventListenerList    listenerList = new EventListenerList();
 
  boolean              oldSelected;

  public ObjectChekBoxModel(final JCheckBox box, T object) {
    this.object = object;
    box.setModel(ObjectChekBoxModel.this);
    /*EventQueue.invokeLater(new Runnable() {
      public void run() {
        box.setModel(ObjectChekBoxModel.this);
      }
    });*/
  }
 
    /**
     * {@inheritDoc}
     */
  @Override
  public boolean isArmed() {
    return armed;
   }
 
    /**
     * {@inheritDoc}
     */
  @Override
  public void setArmed(boolean b) {
    if ((isArmed() == b) || !isEnabled()) {
      return;
    }
        armed = b;

    fireChange();
  }

 
    /**
     * {@inheritDoc}
     */
  @Override
  public boolean isSelected() {
    try {
      if (isEnabledSelecionViseble()){
        return isSelectedImp();
      }
      else{
        return false;
      }
    }
    catch (ClipsException ex) {
      MessageBox.showException(ex);
    }
    return false;
  }


    /**
     * {@inheritDoc}
     */
  @Override
  public void setSelected(boolean b) {
    if (isEnabled()){
      if (this.isSelected() == b) {
        return;
      }
      try {
        setSelectedImp(b);
        //fireChange();
      } catch (ClipsException ex) {
        MessageBox.showException(ex);
      }
    }
  }

  abstract public boolean isSelectedImp() throws ClipsException;
  abstract public void setSelectedImp(boolean val) throws ClipsException;

    /**
     * {@inheritDoc}
     */
  @Override
  public boolean isEnabled() {
    return isEnabledSelecionViseble() && enabled;
  }

  public boolean isEnabledSelecionViseble() {
    return object != null;
  }

    /**
     * {@inheritDoc}
     */
  @Override
  public void setEnabled(boolean b) {
    if(enabled == b) {
            return;
        }
    enabled = b;
    if (!enabled){
      armed = false;
      pressed = false;
    }
    fireChange();
  }
 
    /**
     * {@inheritDoc}
     */
  @Override
  public boolean isPressed() {
    return pressed;
  }
 
    /**
     * {@inheritDoc}
     */
  @Override
  public void setPressed(boolean b) {
       if((isPressed() == b) || !isEnabled()) {
            return;
        }
       
    pressed = b;

        if(!isPressed() && isArmed()) {
      setSelected(!this.isSelected());

            int modifiers = 0;
            AWTEvent currentEvent = EventQueue.getCurrentEvent();
            if (currentEvent instanceof InputEvent) {
                modifiers = ((InputEvent)currentEvent).getModifiers();
            } else if (currentEvent instanceof ActionEvent) {
                modifiers = ((ActionEvent)currentEvent).getModifiers();
            }
            fireActionPerformed(
                new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
                                getActionCommand(),
                                EventQueue.getMostRecentEventTime(),
                                modifiers));
        }
           
        fireChange();
  }

    /**
     * {@inheritDoc}
     */
  @Override
  public boolean isRollover() {
    return rollover;
  }

    /**
     * {@inheritDoc}
     */
  @Override
  public void setRollover(boolean b) {
        if((isRollover() == b) || !isEnabled()) {
            return;
        }
     rollover = b;
    fireChange();
  }

    /**
     * {@inheritDoc}
     */
  @Override
  public int getMnemonic() {
    return mnemonic;
  }
 
    /**
     * {@inheritDoc}
     */
  @Override
  public void setMnemonic(int key) {
    mnemonic = key;
    fireChange();
  }

    /**
     * {@inheritDoc}
     */
  @Override
    public String getActionCommand() {
        return actionCommand;
    }
 
    /**
     * {@inheritDoc}
     */
  @Override
  public void setActionCommand(String actionCommand) {
        this.actionCommand = actionCommand;
    }
       
    /**
     * {@inheritDoc}
     */
  @Override
  public void setGroup(ButtonGroup group) {
    this.group = group;
  }

 
 
    /**
     * {@inheritDoc}
     */
  @Override
  public void addActionListener(ActionListener l) {
    listenerList.add(ActionListener.class, l);
  }

    /**
     * {@inheritDoc}
     */
  @Override
  public void removeActionListener(ActionListener l) {
    listenerList.remove(ActionListener.class, l);
  }

    /**
     * {@inheritDoc}
     */
  @Override
  public void addItemListener(ItemListener l) {
    listenerList.add(ItemListener.class, l);
  }

    /**
     * {@inheritDoc}
     */
  @Override
  public void removeItemListener(ItemListener l) {
    listenerList.remove(ItemListener.class, l);
  }

    /**
     * {@inheritDoc}
     */
  @Override
  public void addChangeListener(ChangeListener l) {
    listenerList.add(ChangeListener.class, l);
  }

    /**
     * {@inheritDoc}
     */
  @Override
  public void removeChangeListener(ChangeListener l) {
    listenerList.remove(ChangeListener.class, l);
  }

    /**
     * {@inheritDoc}
     */
  @Override
  public Object[] getSelectedObjects() {
    return null;
  }

  public T getObject() {
    return object;
  }

  public void setObject(T object) {
    if (this.object != object || object == null){
      this.object = object;
      contentStateChanged();
    }
  }
 
  @Override
  public void contentStateChanged() {
    fireChange();
  }
 
  protected void fireChange(){
    if (oldSelected != isSelected()){
      fireItemStateChanged(isSelected()? ItemEvent.SELECTED: ItemEvent.DESELECTED);
      oldSelected = isSelected();
    }
    fireStateChange();
  }
 
  protected void fireActionPerformed(ActionEvent ae){
    for (ActionListener changeListener : listenerList.getListeners(ActionListener.class)) {
      changeListener.actionPerformed(ae);
    }
  }
 
  protected void fireItemStateChanged(int state){
    ItemEvent    e = null;
    for (ItemListener changeListener : listenerList.getListeners(ItemListener.class)) {
      if (e == null) {
        e = new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED, this, state);
      }
      changeListener.itemStateChanged(e);
    }
  }
 
  protected void fireStateChange(){
    ChangeEvent    e = null;
    for (ChangeListener changeListener : listenerList.getListeners(ChangeListener.class)) {
      if (e == null) {
        e = new ChangeEvent(this);
      }
      changeListener.stateChanged(e);
    }
  }
 
}
TOP

Related Classes of cli_fmw.report.panels.model.ObjectChekBoxModel

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.