/*
* Copyright (C) 2011 Alvaro Duran Tovar
*
* This file is part of AFA.
*
* AFA is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* PluginSelectionPanel.java
*
* Created on 15-mar-2011, 20:40:05
*/
package afa.view;
import afa.control.plugins.PluginsManager;
import afa.model.Category;
import afa.model.Plugin;
import java.util.Vector;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel;
/**
*
* @author Alvaro Duran Tovar
*/
public class PluginSelectionPanel extends javax.swing.JPanel {
private Vector<Category> selectedPlugins;
/** Creates new form PluginSelectionPanel */
public PluginSelectionPanel() {
initComponents();
jTree1.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
}
/** 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() {
step3 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTree1 = new javax.swing.JTree();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
jTree3 = new javax.swing.JTree();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jTextField2 = new javax.swing.JTextField();
jLabel22 = new javax.swing.JLabel();
jSeparator4 = new javax.swing.JSeparator();
jSeparator7 = new javax.swing.JSeparator();
jLabel20 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jScrollPane3 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
setLayout(new java.awt.BorderLayout());
step3.setPreferredSize(new java.awt.Dimension(553, 390));
javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("/");
jTree1.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
jTree1ValueChanged(evt);
}
});
jScrollPane1.setViewportView(jTree1);
jButton3.setText("->");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton4.setText("<-");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("/");
jTree3.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
jScrollPane2.setViewportView(jTree3);
jLabel5.setText("Disponibles");
jLabel6.setText("Seleccionados");
jTextField2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField2ActionPerformed(evt);
}
});
jLabel22.setText("Seleccion de los plugins");
jLabel20.setText("Descripcion");
jButton1.setText("Add Filter");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/afa/view/icons/clear.png"))); // NOI18N
jLabel1.setToolTipText("Clear filter");
jLabel1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel1MouseClicked(evt);
}
});
jTextArea1.setColumns(20);
jTextArea1.setEditable(false);
jTextArea1.setLineWrap(true);
jTextArea1.setRows(5);
jScrollPane3.setViewportView(jTextArea1);
javax.swing.GroupLayout step3Layout = new javax.swing.GroupLayout(step3);
step3.setLayout(step3Layout);
step3Layout.setHorizontalGroup(
step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(step3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(step3Layout.createSequentialGroup()
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSeparator4, javax.swing.GroupLayout.DEFAULT_SIZE, 718, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, step3Layout.createSequentialGroup()
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel5)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, step3Layout.createSequentialGroup()
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, step3Layout.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 231, Short.MAX_VALUE)
.addGap(0, 0, 0)
.addComponent(jLabel1))
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 326, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jButton4)
.addComponent(jButton3))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel6)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 342, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGap(12, 12, 12))
.addComponent(jLabel22)
.addGroup(step3Layout.createSequentialGroup()
.addComponent(jLabel20)
.addContainerGap(655, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, step3Layout.createSequentialGroup()
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 718, Short.MAX_VALUE)
.addComponent(jSeparator7, javax.swing.GroupLayout.DEFAULT_SIZE, 718, Short.MAX_VALUE))
.addContainerGap())))
);
step3Layout.setVerticalGroup(
step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(step3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel22)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(jLabel5))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(step3Layout.createSequentialGroup()
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(step3Layout.createSequentialGroup()
.addGap(28, 28, 28)
.addComponent(jButton3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton4))
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 198, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(step3Layout.createSequentialGroup()
.addGap(6, 6, 6)
.addComponent(jLabel1))
.addGroup(step3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1))))
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 232, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator7, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel20)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
add(step3, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_jTree1ValueChanged
// TODO add your handling code here:
//check if a node is selected
if (evt.getNewLeadSelectionPath() == null
|| evt.getNewLeadSelectionPath().toString().split(", ").length != 3) {
} else {
try {
String s[] = Helper.treePathToStringArray(evt.getNewLeadSelectionPath());
Plugin p = Helper.getPluginByStrings(s[1], s[2]);
this.jTextArea1.setText(p.getDescription());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}//GEN-LAST:event_jTree1ValueChanged
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
// TODO add your handling code here:
Helper.moveTreeToTree(jTree1, jTree3);
}//GEN-LAST:event_jButton3ActionPerformed
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
// TODO add your handling code here:
Helper.moveTreeToTree(jTree3, jTree1);
}//GEN-LAST:event_jButton4ActionPerformed
private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField2ActionPerformed
// TODO add your handling code here:
String text = this.jTextField2.getText();
Helper.cleanTree(jTree1);
((DefaultTreeModel) jTree1.getModel()).reload();
try {
Helper.loadPluginsOnTree(jTree1, PluginsManager.getLocalPluginsByFilter(text,
Helper.treeToVector(jTree3, false)));
} catch (Exception e) {
e.printStackTrace();
}
Helper.expandAll(jTree1, true);
}//GEN-LAST:event_jTextField2ActionPerformed
private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel1MouseClicked
// TODO add your handling code here:
jTextField2.setText("");
jTextField2.postActionEvent();
}//GEN-LAST:event_jLabel1MouseClicked
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
CreateFilter.createFilter(jTextField2);
}//GEN-LAST:event_jButton1ActionPerformed
Vector<Category> getSelectedPlugins() {
return selectedPlugins;
}
boolean checkPanel() throws Exception {
Vector<Category> vec = Helper.treeToVector(jTree3, true);
for (Category c : vec) {
for (Plugin p : c.getPlugins()) {
selectedPlugins = vec;
return true;
}
}
javax.swing.JOptionPane.showMessageDialog(null, "Debes seleccionar al menos un plugin",
"No plugin selected",
javax.swing.JOptionPane.ERROR_MESSAGE);
return false;
}
void init() throws Exception {
Helper.cleanTree(jTree1);
Helper.cleanTree(jTree3);
Helper.loadPluginsOnTree(jTree1, null);
Helper.expandAll(jTree1, true);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel22;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JSeparator jSeparator4;
private javax.swing.JSeparator jSeparator7;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTree jTree1;
private javax.swing.JTree jTree3;
private javax.swing.JPanel step3;
// End of variables declaration//GEN-END:variables
}