/*
* Copyright, Aspect Security, Inc.
*
* This file is part of JavaSnoop.
*
* JavaSnoop 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.
*
* JavaSnoop 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 JavaSnoop. If not, see <http://www.gnu.org/licenses/>.
*/
package com.aspect.snoop.ui.tamper.list;
import com.aspect.snoop.SnoopSession;
import com.aspect.snoop.ui.tamper.common.AddItemView;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
public class EditListView extends javax.swing.JDialog {
/** Creates new form EditListView */
private List list;
public EditListView(java.awt.Frame parent, boolean modal, List list) {
super(parent, modal);
initComponents();
this.list = list;
lblClassName.setText(list.getClass().getName());
tblListItems.setModel( new ListTableModel(list) );
ListItemCellRenderer renderer = new ListItemCellRenderer();
tblListItems.setDefaultEditor(JButton.class, renderer);
tblListItems.setDefaultRenderer(JButton.class, renderer);
tblListItems.setRowHeight(25);
}
public List getList() {
return list;
}
/** 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() {
jLabel1 = new javax.swing.JLabel();
lblClassName = new javax.swing.JLabel();
jScrollPane2 = new javax.swing.JScrollPane();
tblListItems = new javax.swing.JTable();
jLabel3 = new javax.swing.JLabel();
btnMoveUp = new javax.swing.JButton();
btnMoveDown = new javax.swing.JButton();
btnAccept = new javax.swing.JButton();
btnAddItem = new javax.swing.JButton();
btnDeleteItem = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(com.aspect.snoop.JavaSnoop.class).getContext().getResourceMap(EditListView.class);
setTitle(resourceMap.getString("Form.title")); // NOI18N
setName("Form"); // NOI18N
setResizable(false);
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
lblClassName.setText(resourceMap.getString("lblClassName.text")); // NOI18N
lblClassName.setName("lblClassName"); // NOI18N
jScrollPane2.setName("jScrollPane2"); // NOI18N
tblListItems.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null},
{null},
{null},
{null}
},
new String [] {
"Title 2"
}
));
tblListItems.setName("tblListItems"); // NOI18N
jScrollPane2.setViewportView(tblListItems);
jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
jLabel3.setName("jLabel3"); // NOI18N
btnMoveUp.setText(resourceMap.getString("btnMoveUp.text")); // NOI18N
btnMoveUp.setName("btnMoveUp"); // NOI18N
btnMoveUp.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnMoveUpActionPerformed(evt);
}
});
btnMoveDown.setText(resourceMap.getString("btnMoveDown.text")); // NOI18N
btnMoveDown.setName("btnMoveDown"); // NOI18N
btnMoveDown.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnMoveDownActionPerformed(evt);
}
});
btnAccept.setText(resourceMap.getString("btnAccept.text")); // NOI18N
btnAccept.setName("btnAccept"); // NOI18N
btnAccept.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAcceptActionPerformed(evt);
}
});
btnAddItem.setText(resourceMap.getString("btnAddItem.text")); // NOI18N
btnAddItem.setName("btnAddItem"); // NOI18N
btnAddItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAddItemActionPerformed(evt);
}
});
btnDeleteItem.setText(resourceMap.getString("btnDeleteItem.text")); // NOI18N
btnDeleteItem.setName("btnDeleteItem"); // NOI18N
btnDeleteItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDeleteItemActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addComponent(lblClassName))
.addComponent(jLabel3)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(btnMoveUp, javax.swing.GroupLayout.DEFAULT_SIZE, 87, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnAddItem, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(btnMoveDown)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnDeleteItem)))
.addGap(117, 117, 117)
.addComponent(btnAccept)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(lblClassName))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 229, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnAddItem)
.addComponent(btnMoveUp))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnMoveDown)
.addComponent(btnDeleteItem)))
.addComponent(btnAccept))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void btnAddItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddItemActionPerformed
AddItemView view = new AddItemView(this, true);
view.setVisible(true);
while(view.isShowing()) {
try {
Thread.sleep(150);
} catch (InterruptedException ex) { }
}
if ( view.getNewItem() != null ) {
list.add(view.getNewItem());
tblListItems.updateUI();
}
}//GEN-LAST:event_btnAddItemActionPerformed
private void btnDeleteItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteItemActionPerformed
try {
list.remove(tblListItems.getSelectedRow());
} catch(Exception e) { }
tblListItems.updateUI();
}//GEN-LAST:event_btnDeleteItemActionPerformed
private void btnMoveUpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMoveUpActionPerformed
int idx = tblListItems.getSelectedRow();
if ( idx == -1 ) {
return;
}
if ( idx == 0 ) {
return;
}
Object above = list.get(idx-1);
Object current = list.get(idx);
list.set(idx-1, current);
list.set(idx, above);
tblListItems.changeSelection(idx-1, 0, false, false);
tblListItems.updateUI();
}//GEN-LAST:event_btnMoveUpActionPerformed
private void btnMoveDownActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMoveDownActionPerformed
int idx = tblListItems.getSelectedRow();
if ( idx == -1 ) {
return;
}
if ( idx == list.size()-1 ) {
return;
}
Object below = list.get(idx+1);
Object current = list.get(idx);
list.set(idx+1, current);
list.set(idx, below);
tblListItems.changeSelection(idx+1, 0, false, false);
tblListItems.updateUI();
}//GEN-LAST:event_btnMoveDownActionPerformed
private void btnAcceptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAcceptActionPerformed
dispose();
}//GEN-LAST:event_btnAcceptActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
ArrayList items = new ArrayList();
items.add(2);
items.add("foobar");
items.add(new SnoopSession());
EditListView dialog = new EditListView(new javax.swing.JFrame(), true, items);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnAccept;
private javax.swing.JButton btnAddItem;
private javax.swing.JButton btnDeleteItem;
private javax.swing.JButton btnMoveDown;
private javax.swing.JButton btnMoveUp;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel3;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel lblClassName;
private javax.swing.JTable tblListItems;
// End of variables declaration//GEN-END:variables
/*
private List getPrimitiveItems(List list) {
}
*/
}