Package com.pcbje.maltegoimporter.app

Source Code of com.pcbje.maltegoimporter.app.GraphImporterComponentApp$ComboBoxRenderer

package com.pcbje.maltegoimporter.app;

import com.pcbje.maltegoimporter.model.impl.MaltegoEntity;
import com.pcbje.maltegoimporter.receiver.impl.CSVFileReceiver;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.ListCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.text.DateFormatter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
*
* @author pcbje
*/
public class GraphImporterComponentApp extends javax.swing.JFrame {

    private final static Logger logger = Logger.getLogger(GraphImporterComponentApp.class.getName());
    private final static String PROP_FILE = "maltego-importer.properties";
    private static String DELIMETER;
    private DefaultTableModel tmodel = new DefaultTableModel();
    private DefaultTableModel rmodel = new DefaultTableModel();
    private Map<Integer, MaltegoEntity> types;
    private Map<String, Integer> typesc;
    private Properties prop;
    private String[] header;
    private boolean initial;
    private static final DateFormat format = new SimpleDateFormat("yyyy_MM_dd-HH_mm_ss");

    /**
     * Creates new form GraphImporterComponentApp
     */
    public GraphImporterComponentApp() {
        initComponents();

        initial = true;

        jTable1.setModel(tmodel);

        tmodel.addColumn("Column");
        tmodel.addColumn("Entity type");

        jTable2.setModel(rmodel);
        rmodel.addColumn("Source column");
        rmodel.addColumn("Target column");
        rmodel.addColumn("Label");

        prop = new Properties();

        if (new File(PROP_FILE).exists()) {
            try {
                prop.load(new FileInputStream(PROP_FILE));
            } catch (Exception ex) {
                logger.log(Level.SEVERE, null, ex);
            }
        }

        JComboBox entities = new JComboBox();

        entities.setRenderer(new ComboBoxRenderer());

        entities.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (types != null && jTable1.getSelectedRow() >= 0) {
                    MaltegoEntity me = (MaltegoEntity) ((JComboBox) e.getSource()).getSelectedItem();

                    types.put(((JComboBox) e.getSource()).getSelectedIndex(), me);

                    prop.put(tmodel.getValueAt(jTable1.getSelectedRow(), 0), me.getName());

                    storeProps();
                }
            }
        });

        Map<String, MaltegoEntity> sorted = new TreeMap<String, MaltegoEntity>();

        for (MaltegoEntity me : MaltegoEntity.values()) {
            sorted.put(me.getName(), me);
        }

        for (MaltegoEntity me : sorted.values()) {
            entities.addItem(me);
        }

        jTable1.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(entities));
    }

    private File convertHeaderBasedCSV(String inputFile) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader(inputFile));

            reader.readLine();

            Map<String, Set<String>> columnRelations = getColumnRelations();

            saveColumnRelations(columnRelations);

            File input = File.createTempFile("maltego-importer", null);

            input.deleteOnExit();

            BufferedWriter writer = new BufferedWriter(new FileWriter(input));

            String line;
            String[] parts;

            while ((line = reader.readLine()) != null) {
                if (DELIMETER.equals(";")) {
                    line = line.replaceAll(",", "");
                } else if (DELIMETER.equals(",")) {
                    String copy = "";
                    boolean inQuotes = false;

                    for (int i = 0; i < line.length(); ++i) {
                        if (line.charAt(i) == '"') {
                            inQuotes = !inQuotes;
                        }
                        if (line.charAt(i) == ',' && inQuotes) {
                            copy += "-";
                        } else {
                            copy += line.charAt(i);
                        }
                    }

                    line = copy;
                }

                line = line.replaceAll(DELIMETER, DELIMETER + " ");
                line = line.replaceAll("\"", "");
                line = line.replaceAll("&", "");

                parts = line.split(DELIMETER);

                String src, dst, label;
                MaltegoEntity srcType, dstType;
               
                for (int i = 0; i < rmodel.getRowCount(); i++) {
                    src = ((String) rmodel.getValueAt(i, 0)).trim();
                    dst = ((String) rmodel.getValueAt(i, 1)).trim();
                    label = (String) rmodel.getValueAt(i, 2);

                    if (parts[typesc.get(src)].trim().length() > 0 && parts[typesc.get(dst)].trim().length() > 0) {
                        srcType = types.get(typesc.get(src));
                        dstType = types.get(typesc.get(dst));

                        writer.write(String.format("%s,%s,%s,%s,%s\n", srcType.getName(), parts[typesc.get(src)], dstType.getName(), parts[typesc.get(dst)], label));
                    }
                }
            }

            reader.close();
            writer.close();

            return input;
        } catch (IOException ex) {
            logger.log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, ex.getMessage());
            return null;
        }
    }

    private Map<String, Set<String>> getColumnRelations() {
        Map<String, Set<String>> relations = new HashMap<String, Set<String>>();

        String source;
        String rel;

        for (int i = 0; i < rmodel.getRowCount(); i++) {
            source = (String) rmodel.getValueAt(i, 0);
            if (!relations.containsKey(source)) {
                relations.put(source, new HashSet<String>());
            }

            rel = (String) rmodel.getValueAt(i, 1);

            if ((String) rmodel.getValueAt(i, 2) != null) {
                rel += ":" + (String) rmodel.getValueAt(i, 2);
            }

            relations.get(source).add(rel);
        }

        return relations;
    }

    private void saveColumnRelations(Map<String, Set<String>> columnRelations) {
        StringBuilder targets;

        for (String col : columnRelations.keySet()) {
            targets = new StringBuilder();

            boolean first = true;

            for (String target : columnRelations.get(col)) {
                if (!first) {
                    targets.append(",");
                }

                targets.append(target);

                first = false;
            }

            prop.put("relation." + col, targets.toString());
        }

        storeProps();
    }

    private void loadColumnRelations(String[] header) {
        Set<String> headerc = new HashSet<String>(Arrays.asList(header));

        for (String key : prop.stringPropertyNames()) {
            if (key.startsWith("relation.")) {
                String source = key.substring("relation.".length(), key.length());

                if (headerc.contains(source)) {
                    String[] targets = prop.getProperty(key).split(",");

                    for (String t : targets) {
                        String[] target = t.split(":");

                        rmodel.addRow(new Object[]{source, target[0], target.length == 2 ? target[1] : ""});
                    }
                }
            }
        }
    }

    private void chooseFile() {
        JFileChooser fileChooser = new JFileChooser();
        int returnVal = fileChooser.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            jTextField1.setText(fileChooser.getSelectedFile().getAbsolutePath());
            jTextField2.setText(System.getProperty("user.home") + "/maltego-importer/" + fileChooser.getSelectedFile().getName() + ".mtgx");
            loadEntityTypeMapping();
        }
    }

    private void chooseHeaderBasedCSV() {
        jScrollPane1.setEnabled(true);
        jScrollPane2.setEnabled(true);
        jTable1.setEnabled(true);       
        jTable2.setEnabled(true);
        jButton3.setEnabled(true);
        jButton5.setEnabled(true);
    }

    private void chooseValueBasedCSV() {
        jScrollPane1.setEnabled(false);
        jScrollPane2.setEnabled(false);
        jTable1.setEnabled(false);
        jTable2.setEnabled(false);
        jButton3.setEnabled(false);
        jButton5.setEnabled(false);
    }

    private void transformInputToMaltegoFormat() {
        File input;

        if (jRadioButton2.isSelected()) {
            input = convertHeaderBasedCSV(jTextField1.getText());
        } else {
            input = new File(jTextField1.getText());
        }

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder;
        try {
            builder = factory.newDocumentBuilder();
            Document document = builder.newDocument();
            Element element = new CSVFileReceiver().receive(document, input);
            TransformerFactory tranFactory = TransformerFactory.newInstance();
            Transformer aTransformer = tranFactory.newTransformer();
            Source src = new DOMSource(element);

            if (!new File(jTextField2.getText()).getParentFile().exists()) {
                new File(jTextField2.getText()).getParentFile().mkdir();
            }
           
            String timestamp = format.format(new Date());
           
            String outputFile = jTextField2.getText().replace(".mtgx", "-" + timestamp + ".mtgx");

            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outputFile));
            out.putNextEntry(new ZipEntry("Graphs/Graph1.graphml"));

            Result dest = new StreamResult(out);

            aTransformer.transform(src, dest);

            out.close();

            JOptionPane.showMessageDialog(null, "Transform completed. Open " + outputFile + " in Maltego");
        } catch (Exception e) {
            logger.log(Level.WARNING, e.getMessage(), e);
        }
    }

    private void clearStoredMappings() {
        new File(PROP_FILE).delete();

        while (rmodel.getRowCount() > 0) {
            rmodel.removeRow(0);
        }

        prop = new Properties();

        loadEntityTypeMapping();
    }

    private void addColumnRelation() {
        rmodel.addRow(new Object[]{header[0], header[0]});
    }

    private void removeColumnRelation() {
        if (jTable2.getSelectedRow() >= 0) {
            rmodel.removeRow(jTable2.getSelectedRow());
        }
    }

    private class ComboBoxRenderer extends JLabel
            implements ListCellRenderer {

        public ComboBoxRenderer() {
        }

        public Component getListCellRendererComponent(
                JList list,
                Object value,
                int index,
                boolean isSelected,
                boolean cellHasFocus) {
            if (isSelected) {
                setBackground(list.getSelectionBackground());
                setForeground(list.getSelectionForeground());
            } else {
                setBackground(list.getBackground());
                setForeground(list.getForeground());
            }

            this.setText(((MaltegoEntity) value).getName());

            return this;
        }
    }
   
    private void storeProps() {
        try {
            prop.store(new FileOutputStream(PROP_FILE), null);
        } catch (IOException ex) {
            logger.log(Level.SEVERE, null, ex);
        }
    }

    private void loadEntityTypeMapping() {
        jButton3.setEnabled(true);
        jButton5.setEnabled(true);

        if (jRadioButton2.isSelected()) {
            while (tmodel.getRowCount() > 0) {
                tmodel.removeRow(0);
            }

            try {
                BufferedReader reader = new BufferedReader(new FileReader(jTextField1.getText()));
                String headerline = reader.readLine();
                reader.close();

                if (headerline.contains(";")) {
                    DELIMETER = ";";
                } else if (headerline.contains(",")) {
                    DELIMETER = ",";
                }

                header = headerline.split(DELIMETER);

                for (int i = 0; i < header.length; i++) {
                    header[i] = header[i].trim();
                }

                if (initial) {
                    loadColumnRelations(header);
                }

                types = new HashMap<Integer, MaltegoEntity>();
                typesc = new HashMap<String, Integer>();

                Map<String, MaltegoEntity> entities = new HashMap<String, MaltegoEntity>();

                for (MaltegoEntity me : MaltegoEntity.values()) {
                    entities.put(me.getName().toLowerCase().replaceAll("[^a-z]", ""), me);
                }

                JComboBox columns = new JComboBox();

                for (int i = 0; i < header.length; i++) {
                    header[i] = header[i].trim();

                    typesc.put(header[i], i);

                    columns.addItem(header[i]);

                    String column = header[i].toLowerCase().replaceAll("[^a-z]", "");

                    if (prop.containsKey(header[i])) {
                        types.put(i, entities.get(prop.getProperty(header[i]).toLowerCase().replaceAll("[^a-z]", "")));
                        tmodel.addRow(new Object[]{header[i], types.get(i)});
                        continue;
                    }

                    int distance;

                    int min = Integer.MAX_VALUE;

                    for (String me : entities.keySet()) {
                        distance = editDistance(me, column);

                        if (distance < min) {
                            min = distance;

                            types.put(i, entities.get(me));
                        }
                    }

                    if (min >= column.length() / 2) {
                        min = Integer.MAX_VALUE;

                        boolean found = false;

                        for (String me : entities.keySet()) {
                            if (me.contains(column) || column.contains(me)) {
                                distance = editDistance(me, column);

                                if (distance < min) {
                                    types.put(i, entities.get(me));
                                    min = distance;
                                    found = true;
                                }

                            }
                        }

                        if (!found) {
                            types.put(i, MaltegoEntity.UNKNOWN);
                        }
                    }

                    tmodel.addRow(new Object[]{header[i], types.get(i)});
                }

                DefaultCellEditor columnEditor = new DefaultCellEditor(columns);

                jTable2.getColumnModel().getColumn(0).setCellEditor(columnEditor);
                jTable2.getColumnModel().getColumn(1).setCellEditor(columnEditor);
            } catch (Exception ex) {
                logger.log(Level.SEVERE, null, ex);

                JOptionPane.showMessageDialog(null, ex.getMessage());
            }
        }

        initial = false;
    }

    /**
     * Source: http://professorjava.weebly.com/edit-distance.html
     */
    private static int editDistance(String s, String t) {
        int m = s.length();
        int n = t.length();
        int[][] d = new int[m + 1][n + 1];
        for (int i = 0; i <= m; i++) {
            d[i][0] = i;
        }
        for (int j = 0; j <= n; j++) {
            d[0][j] = j;
        }
        for (int j = 1; j <= n; j++) {
            for (int i = 1; i <= m; i++) {
                if (s.charAt(i - 1) == t.charAt(j - 1)) {
                    d[i][j] = d[i - 1][j - 1];
                } else {
                    d[i][j] = min((d[i - 1][j] + 1), (d[i][j - 1] + 1), (d[i - 1][j - 1] + 1));
                }
            }
        }
        return (d[m][n]);
    }

    private static int min(int a, int b, int c) {
        return (Math.min(Math.min(a, b), c));
    }

    /**
     * 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() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        jRadioButton1 = new javax.swing.JRadioButton();
        jLabel1 = new javax.swing.JLabel();
        jRadioButton2 = new javax.swing.JRadioButton();
        jLabel2 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jButton4 = new javax.swing.JButton();
        jLabel3 = new javax.swing.JLabel();
        jButton2 = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTable2 = new javax.swing.JTable();
        jButton3 = new javax.swing.JButton();
        jButton5 = new javax.swing.JButton();
        jTextField2 = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        menuBar = new javax.swing.JMenuBar();
        fileMenu = new javax.swing.JMenu();
        openMenuItem = new javax.swing.JMenuItem();
        saveMenuItem = new javax.swing.JMenuItem();
        saveAsMenuItem = new javax.swing.JMenuItem();
        exitMenuItem = new javax.swing.JMenuItem();
        editMenu = new javax.swing.JMenu();
        cutMenuItem = new javax.swing.JMenuItem();
        copyMenuItem = new javax.swing.JMenuItem();
        pasteMenuItem = new javax.swing.JMenuItem();
        deleteMenuItem = new javax.swing.JMenuItem();
        helpMenu = new javax.swing.JMenu();
        contentsMenuItem = new javax.swing.JMenuItem();
        aboutMenuItem = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        buttonGroup1.add(jRadioButton1);
        jRadioButton1.setText("Value based CSV");
        jRadioButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButton1ActionPerformed(evt);
            }
        });

        jLabel1.setText("Input format:");

        buttonGroup1.add(jRadioButton2);
        jRadioButton2.setSelected(true);
        jRadioButton2.setText("Header based CSV");
        jRadioButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButton2ActionPerformed(evt);
            }
        });

        jLabel2.setText("Input file:");

        jButton1.setText("Browse");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Column", "Entity type"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTable1);

        jButton4.setText("Convert to Maltego");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });

        jLabel3.setText("Column mapping:");

        jButton2.setText("Clear stored mappings");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jLabel4.setText("Relations");

        jTable2.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Souorce column", "Target column", "Label"
            }
        ));
        jTable2.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        jScrollPane2.setViewportView(jTable2);

        jButton3.setText("Add relation");
        jButton3.setEnabled(false);
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jButton5.setText("Remove relation");
        jButton5.setEnabled(false);
        jButton5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton5ActionPerformed(evt);
            }
        });

        jLabel5.setText("Output file:");

        fileMenu.setMnemonic('f');
        fileMenu.setText("File");

        openMenuItem.setMnemonic('o');
        openMenuItem.setText("Open");
        fileMenu.add(openMenuItem);

        saveMenuItem.setMnemonic('s');
        saveMenuItem.setText("Save");
        fileMenu.add(saveMenuItem);

        saveAsMenuItem.setMnemonic('a');
        saveAsMenuItem.setText("Save As ...");
        saveAsMenuItem.setDisplayedMnemonicIndex(5);
        fileMenu.add(saveAsMenuItem);

        exitMenuItem.setMnemonic('x');
        exitMenuItem.setText("Exit");
        exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                exitMenuItemActionPerformed(evt);
            }
        });
        fileMenu.add(exitMenuItem);

        menuBar.add(fileMenu);

        editMenu.setMnemonic('e');
        editMenu.setText("Edit");

        cutMenuItem.setMnemonic('t');
        cutMenuItem.setText("Cut");
        editMenu.add(cutMenuItem);

        copyMenuItem.setMnemonic('y');
        copyMenuItem.setText("Copy");
        editMenu.add(copyMenuItem);

        pasteMenuItem.setMnemonic('p');
        pasteMenuItem.setText("Paste");
        editMenu.add(pasteMenuItem);

        deleteMenuItem.setMnemonic('d');
        deleteMenuItem.setText("Delete");
        editMenu.add(deleteMenuItem);

        menuBar.add(editMenu);

        helpMenu.setMnemonic('h');
        helpMenu.setText("Help");

        contentsMenuItem.setMnemonic('c');
        contentsMenuItem.setText("Contents");
        helpMenu.add(contentsMenuItem);

        aboutMenuItem.setMnemonic('a');
        aboutMenuItem.setText("About");
        helpMenu.add(aboutMenuItem);

        menuBar.add(helpMenu);

        setJMenuBar(menuBar);

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(layout.createSequentialGroup()
                        .add(jButton4)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(jButton2))
                    .add(layout.createSequentialGroup()
                        .add(6, 6, 6)
                        .add(jScrollPane1))
                    .add(layout.createSequentialGroup()
                        .add(6, 6, 6)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jScrollPane2)
                            .add(layout.createSequentialGroup()
                                .add(jLabel4)
                                .add(0, 0, Short.MAX_VALUE))))
                    .add(layout.createSequentialGroup()
                        .add(jButton3)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jButton5)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 441, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .add(layout.createSequentialGroup()
                        .add(8, 8, 8)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(layout.createSequentialGroup()
                                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                                    .add(layout.createSequentialGroup()
                                        .add(8, 8, 8)
                                        .add(jLabel1))
                                    .add(jLabel5)
                                    .add(jLabel2))
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                                    .add(layout.createSequentialGroup()
                                        .add(jRadioButton2)
                                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                                        .add(jRadioButton1))
                                    .add(layout.createSequentialGroup()
                                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
                                            .add(org.jdesktop.layout.GroupLayout.LEADING, jTextField2)
                                            .add(org.jdesktop.layout.GroupLayout.LEADING, jTextField1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 245, Short.MAX_VALUE))
                                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                        .add(jButton1)))
                                .add(0, 0, Short.MAX_VALUE))
                            .add(layout.createSequentialGroup()
                                .add(jLabel3)
                                .add(593, 593, 593)))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(10, 10, 10)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel1)
                    .add(jRadioButton2)
                    .add(jRadioButton1))
                .add(18, 18, 18)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel2)
                    .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jButton1))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jTextField2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jLabel5))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jLabel3)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 159, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(jLabel4)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 114, Short.MAX_VALUE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jButton3)
                    .add(jButton5))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jButton4)
                    .add(jButton2))
                .addContainerGap())
        );

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

    private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
        System.exit(0);
    }//GEN-LAST:event_exitMenuItemActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        chooseFile();
    }//GEN-LAST:event_jButton1ActionPerformed

    private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton2ActionPerformed
        chooseHeaderBasedCSV();
    }//GEN-LAST:event_jRadioButton2ActionPerformed

    private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton1ActionPerformed
        chooseValueBasedCSV();
    }//GEN-LAST:event_jRadioButton1ActionPerformed

   

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
        transformInputToMaltegoFormat();
    }//GEN-LAST:event_jButton4ActionPerformed
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        clearStoredMappings();
    }//GEN-LAST:event_jButton2ActionPerformed

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
        addColumnRelation();
    }//GEN-LAST:event_jButton3ActionPerformed

    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
        removeColumnRelation();
    }//GEN-LAST:event_jButton5ActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;




                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(GraphImporterComponentApp.class
                    .getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(GraphImporterComponentApp.class
                    .getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(GraphImporterComponentApp.class
                    .getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(GraphImporterComponentApp.class
                    .getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GraphImporterComponentApp().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuItem aboutMenuItem;
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JMenuItem contentsMenuItem;
    private javax.swing.JMenuItem copyMenuItem;
    private javax.swing.JMenuItem cutMenuItem;
    private javax.swing.JMenuItem deleteMenuItem;
    private javax.swing.JMenu editMenu;
    private javax.swing.JMenuItem exitMenuItem;
    private javax.swing.JMenu fileMenu;
    private javax.swing.JMenu helpMenu;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JRadioButton jRadioButton1;
    private javax.swing.JRadioButton jRadioButton2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTable jTable1;
    private javax.swing.JTable jTable2;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JMenuBar menuBar;
    private javax.swing.JMenuItem openMenuItem;
    private javax.swing.JMenuItem pasteMenuItem;
    private javax.swing.JMenuItem saveAsMenuItem;
    private javax.swing.JMenuItem saveMenuItem;
    // End of variables declaration//GEN-END:variables
}
TOP

Related Classes of com.pcbje.maltegoimporter.app.GraphImporterComponentApp$ComboBoxRenderer

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.