/*
* 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.map;
import com.aspect.snoop.SnoopSession;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JButton;
public class EditMapView extends javax.swing.JDialog {
private Map map;
public EditMapView(java.awt.Frame parent, boolean modal, Map map) {
super(parent, modal);
initComponents();
this.map = map;
lblClassName.setText(map.getClass().getName());
tblMapItems.setModel( new MapTableModel(map) );
MapItemCellRenderer renderer = new MapItemCellRenderer();
tblMapItems.setDefaultEditor(JButton.class, renderer);
tblMapItems.setDefaultRenderer(JButton.class, renderer);
tblMapItems.setRowHeight(25);
}
/** 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() {
jScrollPane2 = new javax.swing.JScrollPane();
tblMapItems = new javax.swing.JTable();
jLabel3 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
lblClassName = new javax.swing.JLabel();
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(EditMapView.class);
setTitle(resourceMap.getString("Form.title")); // NOI18N
setName("Form"); // NOI18N
setResizable(false);
jScrollPane2.setName("jScrollPane2"); // NOI18N
tblMapItems.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null},
{null},
{null},
{null}
},
new String [] {
"Title 2"
}
));
tblMapItems.setName("tblMapItems"); // NOI18N
jScrollPane2.setViewportView(tblMapItems);
jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
jLabel3.setName("jLabel3"); // NOI18N
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
lblClassName.setText(resourceMap.getString("lblClassName.text")); // NOI18N
lblClassName.setName("lblClassName"); // NOI18N
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()
.addComponent(btnAddItem)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnDeleteItem)
.addContainerGap(242, Short.MAX_VALUE))
.addGroup(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()
.addGap(291, 291, 291)
.addComponent(btnAccept)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(315, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnAddItem)
.addComponent(btnDeleteItem))
.addContainerGap())
.addGroup(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, 258, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.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
AddMapItemView view = new AddMapItemView(this, true);
view.setVisible(true);
while(view.isShowing()) {
try {
Thread.sleep(150);
} catch (InterruptedException ex) { }
}
if ( view.getValue() != null ) {
Object key = view.getKey();
Object value = view.getValue();
map.put(key,value);
MapTableModel model = (MapTableModel)tblMapItems.getModel();
model.refresh();
tblMapItems.updateUI();
}
}//GEN-LAST:event_btnAddItemActionPerformed
private void btnDeleteItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteItemActionPerformed
int idx = tblMapItems.getSelectedRow();
if ( idx == -1 ) {
return;
}
MapTableModel model = (MapTableModel)tblMapItems.getModel();
Object key = model.getValueAt(idx, 0);
map.remove(key);
model.refresh();
tblMapItems.updateUI();
}//GEN-LAST:event_btnDeleteItemActionPerformed
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() {
HashMap map = new HashMap();
map.put("foo", "bar");
map.put(2, "nickel");
map.put(3L, new SnoopSession());
EditMapView dialog = new EditMapView(new javax.swing.JFrame(), true, map);
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.JLabel jLabel1;
private javax.swing.JLabel jLabel3;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel lblClassName;
private javax.swing.JTable tblMapItems;
// End of variables declaration//GEN-END:variables
}