Package clips.report.panels.utils

Source Code of clips.report.panels.utils.DirectoryTreeSellectPanel

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

/*
* MKBTreePanel.java
*
* Created on Apr 27, 2009, 3:27:38 PM
*/

package clips.report.panels.utils;

import beans.report.SelectedIdList;
import cli_fmw.delegate.directory.DirectoryItemRecursive;
import cli_fmw.delegate.directory.DirectoryRecursive;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.directory.dialogs.DirectoryDialogTreeModel;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.table_config_states.StateSaver;
import clips.delegate.directory.complex.DirectoryMKB10;
import clips.delegate.directory.complex.DirectoryMKB10Item;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.ArrayList;
import javax.swing.tree.TreePath;

/**
*
* @author finder
*/
public class DirectoryTreeSellectPanel extends javax.swing.JPanel {
  static final long                          serialVersionUID = 1L;

  private DirectoryDialogTreeModel                  treeModel;
  private TreeSellectCellRenderer                    treeRender;
  private DirectoryRecursive<?, ? extends DirectoryItemRecursive>    dir;
  private DirectoryItemRecursive                    popUpMenuItem;

  /** Creates new form MKBTreePanel
   * @param dir
   * @param allowNullItem
   * @throws ClipsException
   */
    public DirectoryTreeSellectPanel(DirectoryRecursive<?, ? extends DirectoryItemRecursive> dir) throws ClipsException {
        initComponents();

    this.dir = dir;

    ArrayList<DirectoryItemRecursive>  list = new ArrayList<DirectoryItemRecursive>();
    for (DirectoryItemRecursive item : dir.getItemsList()) {
      if (item.getID() != 0){
        list.add(item);
      }
    }
    treeModel = new DirectoryDialogTreeModel(list.toArray(), dir.getDirectoryTitle());
    treeRender = new TreeSellectCellRenderer(dir);
    mkb10Tree.setModel(treeModel);
    mkb10Tree.setCellRenderer(treeRender);
    StateSaver.attachTo(this);
           
   }

    /** 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" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        pmMkbTree = new javax.swing.JPopupMenu();
        mirDeselect = new javax.swing.JRadioButtonMenuItem();
        mirSelect = new javax.swing.JRadioButtonMenuItem();
        mirExclude = new javax.swing.JRadioButtonMenuItem();
        jScrollPane2 = new javax.swing.JScrollPane();
        mkb10Tree = new javax.swing.JTree();

        pmMkbTree.setAutoscrolls(true);

        mirDeselect.setSelected(true);
        mirDeselect.setText("Не добавлять к линии");
        mirDeselect.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                mirDeselectActionPerformed(evt);
            }
        });
        pmMkbTree.add(mirDeselect);

        mirSelect.setText("Добавить к линии");
        mirSelect.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                mirSelectActionPerformed(evt);
            }
        });
        pmMkbTree.add(mirSelect);

        mirExclude.setText("Игнорировать, или специальный");
        mirExclude.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                mirExcludeActionPerformed(evt);
            }
        });
        pmMkbTree.add(mirExclude);

        setLayout(new java.awt.GridLayout(1, 0));

        mkb10Tree.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                mkb10TreeMouseClicked(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                mkb10TreeMousePressed(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                mkb10TreeMouseReleased(evt);
            }
        });
        jScrollPane2.setViewportView(mkb10Tree);

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

  private void mkb10TreeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mkb10TreeMouseClicked
    if (treeRender.getObject() == null) {
      return;
    }

    Object clickedObject = getTreeItemAt(evt.getPoint(), true);
    if (clickedObject == null || !(clickedObject instanceof DirectoryMKB10Item)) {
      return;
    }

    DirectoryMKB10Item    clickedItem = (DirectoryMKB10Item) clickedObject;
    new DirectorySellectUtil(dir).inverceSelection(treeRender.getObject(), clickedItem);
    evt.consume();
}//GEN-LAST:event_mkb10TreeMouseClicked

  private void mkb10TreeMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mkb10TreeMousePressed
    if (evt.isPopupTrigger()){
      if (showMkbPopup(evt.getPoint())) {
        evt.consume();
      }
    }
}//GEN-LAST:event_mkb10TreeMousePressed

  private void mkb10TreeMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mkb10TreeMouseReleased
    if (evt.isPopupTrigger()){
      if (showMkbPopup(evt.getPoint())) {
        evt.consume();
      }
    }
}//GEN-LAST:event_mkb10TreeMouseReleased

  private void mirDeselectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mirDeselectActionPerformed
    if (treeRender.getObject() != null && popUpMenuItem != null ){
      new DirectorySellectUtil(dir).deselectItem(treeRender.getObject(), popUpMenuItem);
    }
}//GEN-LAST:event_mirDeselectActionPerformed

  private void mirSelectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mirSelectActionPerformed
    if (treeRender.getObject() != null && popUpMenuItem != null ){
      new DirectorySellectUtil(dir).selectItem(treeRender.getObject(), popUpMenuItem);
    }
}//GEN-LAST:event_mirSelectActionPerformed

  private void mirExcludeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mirExcludeActionPerformed
    if (treeRender.getObject() != null && popUpMenuItem != null ){
      new DirectorySellectUtil(dir).excludeItem(treeRender.getObject(), popUpMenuItem);
    }
}//GEN-LAST:event_mirExcludeActionPerformed


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JRadioButtonMenuItem mirDeselect;
    private javax.swing.JRadioButtonMenuItem mirExclude;
    private javax.swing.JRadioButtonMenuItem mirSelect;
    private javax.swing.JTree mkb10Tree;
    private javax.swing.JPopupMenu pmMkbTree;
    // End of variables declaration//GEN-END:variables

  private boolean showMkbPopup(Point pt){
    if (treeRender.getObject() == null) {
      return false;
    }

    Object      obj = getTreeItemAt(pt, false);
    if (obj == null || !(obj instanceof DirectoryMKB10Item)) {
      return false;
    }

    popUpMenuItem = (DirectoryMKB10Item)obj;
    try {
      DirectorySellectUtil.SelectionType state = new DirectorySellectUtil(dir).getSelectType(treeRender.getObject(), popUpMenuItem);
      mirExclude.setSelected(false);
      mirSelect.setSelected(false);
      mirDeselect.setSelected(false);
      if (state.canceled == DirectorySellectUtil.ContainType.isAreSelected) {
        mirExclude.setSelected(true);
      }
      else if (state.selected == DirectorySellectUtil.ContainType.isAreSelected) {
        mirSelect.setSelected(true);
      }
        else {
        mirDeselect.setSelected(true);
      }
      pmMkbTree.show(mkb10Tree, pt.x, pt.y);
    } catch (ClipsException ex) {
      MessageBox.showException(ex);
    }
    return true;
  }

  private Object getTreeItemAt(Point pt, boolean forIconOnly){
    TreePath        path = mkb10Tree.getPathForLocation(pt.x, pt.y);
    if (path == null){
      return null;
    }

    Rectangle        rect = mkb10Tree.getPathBounds(path);
    if (rect == null) {
      return null;
    }

    if (forIconOnly) {
      rect.width = TreeSellectCellRenderer.ICON_SEL_CHILDREN.getIconWidth();
    }

    if (!rect.contains(pt)){
      return null;
    }

    Object          clickedObject = path.getLastPathComponent();
    return clickedObject;
  }

  public void setObject(SelectedIdList line) {
    treeRender.setObject(line);
    mkb10Tree.setEnabled(line != null);
    mkb10Tree.repaint();
  }

  public SelectedIdList getObject() {
    return treeRender.getObject();
  }

  public void onTreeUpdated(){
    mkb10Tree.repaint();
  }
}
TOP

Related Classes of clips.report.panels.utils.DirectoryTreeSellectPanel

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.