/* * The contents of this file are subject to the terms of the Common Development * and Distribution License (the License). You may not use this file except in * compliance with the License. * * You can obtain a copy of the License at http://www.netbeans.org/cddl.html * or http://www.netbeans.org/cddl.txt. * * When distributing Covered Code, include this CDDL Header Notice in each file * and include the License file at http://www.netbeans.org/cddl.txt. * If applicable, add the following below the CDDL Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyrighted [year] [name of copyright owner]" */ package com.nanosn.netbeans.gwtxml.ui.gwtmodule; import com.nanosn.netbeans.gwtxml.GwtXmlDataObject; import java.io.IOException; import javax.swing.JComponent; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableModel; import org.netbeans.modules.xml.multiview.ui.SectionInnerPanel; import org.netbeans.modules.xml.multiview.ui.SectionView; import org.openide.util.Exceptions; import org.openide.util.NbBundle; /** * * @author selkhateeb */ public class CompilerPanel extends SectionInnerPanel { private static final long serialVersionUID = 1; private GwtXmlDataObject dObj; private DefaultTableModel TableModuleDefineLinker = new DefaultTableModel( new String[]{NbBundle.getMessage(CompilerPanel.class, "NAME"), // NOI18N NbBundle.getMessage(CompilerPanel.class, "CLASS")}, 0); // NOI18N private DefaultTableModel TableModuleAddLinker = new DefaultTableModel( new String[]{NbBundle.getMessage(CompilerPanel.class, "NAME")}, 0); // NOI18N /** Creates new form CompilerPanel */ public CompilerPanel(SectionView view, GwtXmlDataObject dObj) { super(view); this.dObj = dObj; initComponents(); try { initCustomComponents(); } catch (IOException ex) { Exceptions.printStackTrace(ex); } } private void initCustomComponents() throws IOException { //Sets the UI values //<define-linker name="" class="" /> for (int i = 0; i < dObj.getModule().getDefineLinker().length; i++) { String defineLinkerName = dObj.getModule().getDefineLinkerName(i); String defineLinkerClass = dObj.getModule().getDefineLinkerClass(i); TableModuleDefineLinker.addRow(new String[]{defineLinkerName, defineLinkerClass}); } //<add-linker name="" /> for (int i = 0; i < dObj.getModule().getAddLinker().length; i++) { String addLinkerName = dObj.getModule().getAddLinkerName(i); TableModuleAddLinker.addRow(new String[]{addLinkerName}); } //TableModuleDefineLinker listener TableModuleDefineLinker.addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { System.out.println("tableChanged"); // NOI18N switch (e.getType()) { case TableModelEvent.INSERT: String insertedNameValue = (String) TableModuleDefineLinker.getValueAt(e.getFirstRow(), 0); String insertedClassValue = (String) TableModuleDefineLinker.getValueAt(e.getFirstRow(), 1); try { int index = dObj.getModule().addDefineLinker(true); dObj.getModule().setDefineLinkerName(index, insertedNameValue); dObj.getModule().setDefineLinkerClass(index, insertedClassValue); } catch (IOException ex) { Exceptions.printStackTrace(ex); } break; case TableModelEvent.UPDATE: String updatedNameValue = (String) TableModuleDefineLinker.getValueAt(e.getFirstRow(), 0); String updatedClassValue = (String) TableModuleDefineLinker.getValueAt(e.getFirstRow(), 1); if (updatedNameValue.trim().equals("") && updatedClassValue.trim().equals("")) { // NOI18N //delete it -- not intrested in empty values TableModuleDefineLinker.removeRow(e.getFirstRow()); try { dObj.getModule().removeDefineLinker(e.getFirstRow()); } catch (IOException ex) { Exceptions.printStackTrace(ex); } break; } try { dObj.getModule().setDefineLinkerName(e.getFirstRow(), updatedNameValue); dObj.getModule().setDefineLinkerClass(e.getFirstRow(), updatedClassValue); } catch (IOException ex) { Exceptions.printStackTrace(ex); } break; case TableModelEvent.DELETE: try { for (int i = e.getFirstRow(); i <= e.getLastRow(); i++) { dObj.getModule().removeDefineLinker(i); } } catch (IOException ex) { Exceptions.printStackTrace(ex); } break; } //update xml view dObj.modelUpdatedFromUI(); } }); //TableModuleAddLinker listener TableModuleAddLinker.addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { System.out.println("tableChanged"); // NOI18N switch (e.getType()) { case TableModelEvent.INSERT: String insertedValue = (String) TableModuleAddLinker.getValueAt(e.getFirstRow(), 0); try { int index = dObj.getModule().addAddLinker(true); dObj.getModule().setAddLinkerName(index, insertedValue); } catch (IOException ex) { Exceptions.printStackTrace(ex); } break; case TableModelEvent.UPDATE: String updatedValue = (String) TableModuleAddLinker.getValueAt(e.getFirstRow(), 0); if (updatedValue.trim().equals("")) { // NOI18N //delete it -- not intrested in empty values TableModuleAddLinker.removeRow(e.getFirstRow()); try { dObj.getModule().removeAddLinker(e.getFirstRow()); } catch (IOException ex) { Exceptions.printStackTrace(ex); } break; } try { dObj.getModule().setAddLinkerName(e.getFirstRow(), updatedValue); } catch (IOException ex) { Exceptions.printStackTrace(ex); } break; case TableModelEvent.DELETE: try { for (int i = e.getFirstRow(); i <= e.getLastRow(); i++) { dObj.getModule().removeAddLinker(i); } } catch (IOException ex) { Exceptions.printStackTrace(ex); } break; } //update xml view dObj.modelUpdatedFromUI(); } }); } /** 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() { jPanelDefinedLinkersModules = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jTableDefineLinkers = new javax.swing.JTable(); jButtonDefinedLinkersRemove = new javax.swing.JButton(); jButtonDefinedLinkersAdd = new javax.swing.JButton(); jPanelAddLinkersModules = new javax.swing.JPanel(); jScrollPane2 = new javax.swing.JScrollPane(); jTableAddLinkers = new javax.swing.JTable(); jButtonAddLinkersRemove = new javax.swing.JButton(); jButtonAddLinkersAdd = new javax.swing.JButton(); jPanelDefinedLinkersModules.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(CompilerPanel.class, "CompilerPanel.jPanelDefinedLinkersModules.border.title"))); // NOI18N jPanelDefinedLinkersModules.setName("Name of the modules to be Inherited:"); // NOI18N jTableDefineLinkers.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jTableDefineLinkers.setModel(this.TableModuleDefineLinker); jTableDefineLinkers.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { jTableDefineLinkersFocusGained(evt); } }); jScrollPane1.setViewportView(jTableDefineLinkers); jButtonDefinedLinkersRemove.setText(org.openide.util.NbBundle.getMessage(CompilerPanel.class, "CompilerPanel.jButtonDefinedLinkersRemove.text")); // NOI18N jButtonDefinedLinkersRemove.setEnabled(false); jButtonDefinedLinkersRemove.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonDefinedLinkersRemoveActionPerformed(evt); } }); jButtonDefinedLinkersRemove.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { jButtonDefinedLinkersRemoveFocusGained(evt); } }); jButtonDefinedLinkersAdd.setText(org.openide.util.NbBundle.getMessage(CompilerPanel.class, "CompilerPanel.jButtonDefinedLinkersAdd.text")); // NOI18N jButtonDefinedLinkersAdd.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonDefinedLinkersAddActionPerformed(evt); } }); org.jdesktop.layout.GroupLayout jPanelDefinedLinkersModulesLayout = new org.jdesktop.layout.GroupLayout(jPanelDefinedLinkersModules); jPanelDefinedLinkersModules.setLayout(jPanelDefinedLinkersModulesLayout); jPanelDefinedLinkersModulesLayout.setHorizontalGroup( jPanelDefinedLinkersModulesLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanelDefinedLinkersModulesLayout.createSequentialGroup() .addContainerGap() .add(jPanelDefinedLinkersModulesLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanelDefinedLinkersModulesLayout.createSequentialGroup() .add(jButtonDefinedLinkersAdd) .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) .add(jButtonDefinedLinkersRemove)) .add(org.jdesktop.layout.GroupLayout.TRAILING, jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 643, Short.MAX_VALUE)) .addContainerGap()) ); jPanelDefinedLinkersModulesLayout.setVerticalGroup( jPanelDefinedLinkersModulesLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanelDefinedLinkersModulesLayout.createSequentialGroup() .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 115, Short.MAX_VALUE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanelDefinedLinkersModulesLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jButtonDefinedLinkersAdd) .add(jButtonDefinedLinkersRemove))) ); jPanelAddLinkersModules.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(CompilerPanel.class, "CompilerPanel.jPanelAddLinkersModules.border.title"))); // NOI18N jPanelAddLinkersModules.setName("Name of the modules to be Inherited:"); // NOI18N jTableAddLinkers.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jTableAddLinkers.setModel(this.TableModuleAddLinker); jTableAddLinkers.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { jTableAddLinkersFocusGained(evt); } }); jScrollPane2.setViewportView(jTableAddLinkers); jButtonAddLinkersRemove.setText(org.openide.util.NbBundle.getMessage(CompilerPanel.class, "CompilerPanel.jButtonAddLinkersRemove.text")); // NOI18N jButtonAddLinkersRemove.setEnabled(false); jButtonAddLinkersRemove.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonAddLinkersRemoveActionPerformed(evt); } }); jButtonAddLinkersRemove.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { jButtonAddLinkersRemoveFocusGained(evt); } }); jButtonAddLinkersAdd.setText(org.openide.util.NbBundle.getMessage(CompilerPanel.class, "CompilerPanel.jButtonAddLinkersAdd.text")); // NOI18N jButtonAddLinkersAdd.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonAddLinkersAddActionPerformed(evt); } }); org.jdesktop.layout.GroupLayout jPanelAddLinkersModulesLayout = new org.jdesktop.layout.GroupLayout(jPanelAddLinkersModules); jPanelAddLinkersModules.setLayout(jPanelAddLinkersModulesLayout); jPanelAddLinkersModulesLayout.setHorizontalGroup( jPanelAddLinkersModulesLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanelAddLinkersModulesLayout.createSequentialGroup() .addContainerGap() .add(jPanelAddLinkersModulesLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanelAddLinkersModulesLayout.createSequentialGroup() .add(jButtonAddLinkersAdd) .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) .add(jButtonAddLinkersRemove)) .add(org.jdesktop.layout.GroupLayout.TRAILING, jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 653, Short.MAX_VALUE)) .addContainerGap()) ); jPanelAddLinkersModulesLayout.setVerticalGroup( jPanelAddLinkersModulesLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanelAddLinkersModulesLayout.createSequentialGroup() .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 115, Short.MAX_VALUE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanelAddLinkersModulesLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jButtonAddLinkersAdd) .add(jButtonAddLinkersRemove))) ); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() .addContainerGap() .add(jPanelAddLinkersModules, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .add(layout.createSequentialGroup() .add(20, 20, 20) .add(jPanelDefinedLinkersModules, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(jPanelDefinedLinkersModules, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) .add(jPanelAddLinkersModules, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); }// </editor-fold>//GEN-END:initComponents private void jTableDefineLinkersFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTableDefineLinkersFocusGained if (this.TableModuleDefineLinker.getRowCount() > 0) { this.jButtonDefinedLinkersRemove.setEnabled(true); } else { this.jButtonDefinedLinkersRemove.setEnabled(false); } }//GEN-LAST:event_jTableDefineLinkersFocusGained private void jButtonDefinedLinkersRemoveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDefinedLinkersRemoveActionPerformed this.TableModuleDefineLinker.removeRow(this.jTableDefineLinkers.getSelectedRow()); if (this.TableModuleDefineLinker.getRowCount() <= 0) { this.jButtonDefinedLinkersRemove.setEnabled(false); } }//GEN-LAST:event_jButtonDefinedLinkersRemoveActionPerformed private void jButtonDefinedLinkersRemoveFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jButtonDefinedLinkersRemoveFocusGained this.jTableDefineLinkersFocusGained(evt); }//GEN-LAST:event_jButtonDefinedLinkersRemoveFocusGained private void jButtonDefinedLinkersAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDefinedLinkersAddActionPerformed TableModuleDefineLinker.addRow(new String[]{""}); // NOI18N jTableDefineLinkers.changeSelection(TableModuleDefineLinker.getRowCount() - 1, 0, false, false); jTableDefineLinkers.editCellAt(TableModuleDefineLinker.getRowCount() - 1, 0); jTableDefineLinkers.requestFocus(); }//GEN-LAST:event_jButtonDefinedLinkersAddActionPerformed private void jTableAddLinkersFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTableAddLinkersFocusGained if (this.TableModuleAddLinker.getRowCount() > 0) { this.jButtonAddLinkersRemove.setEnabled(true); } else { this.jButtonAddLinkersRemove.setEnabled(false); } }//GEN-LAST:event_jTableAddLinkersFocusGained private void jButtonAddLinkersRemoveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAddLinkersRemoveActionPerformed this.TableModuleAddLinker.removeRow(this.jTableAddLinkers.getSelectedRow()); if (this.TableModuleAddLinker.getRowCount() <= 0) { this.jButtonAddLinkersRemove.setEnabled(false); } }//GEN-LAST:event_jButtonAddLinkersRemoveActionPerformed private void jButtonAddLinkersRemoveFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jButtonAddLinkersRemoveFocusGained this.jTableAddLinkersFocusGained(evt); }//GEN-LAST:event_jButtonAddLinkersRemoveFocusGained private void jButtonAddLinkersAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAddLinkersAddActionPerformed TableModuleAddLinker.addRow(new String[]{""}); // NOI18N jTableAddLinkers.changeSelection(TableModuleAddLinker.getRowCount() - 1, 0, false, false); jTableAddLinkers.editCellAt(TableModuleAddLinker.getRowCount() - 1, 0); jTableAddLinkers.requestFocus(); }//GEN-LAST:event_jButtonAddLinkersAddActionPerformed // <editor-fold defaultstate="collapsed" desc="SectionInnerPaner Interface Methods"> @Override public void setValue(JComponent arg0, Object arg1) { throw new UnsupportedOperationException("Not supported yet."); // NOI18N } public void linkButtonPressed(Object arg0, String arg1) { throw new UnsupportedOperationException("Not supported yet."); // NOI18N } public JComponent getErrorComponent(String arg0) { throw new UnsupportedOperationException("Not supported yet."); // NOI18N } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="Variables Declaration"> // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButtonAddLinkersAdd; private javax.swing.JButton jButtonAddLinkersRemove; private javax.swing.JButton jButtonDefinedLinkersAdd; private javax.swing.JButton jButtonDefinedLinkersRemove; private javax.swing.JPanel jPanelAddLinkersModules; private javax.swing.JPanel jPanelDefinedLinkersModules; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTable jTableAddLinkers; private javax.swing.JTable jTableDefineLinkers; // End of variables declaration//GEN-END:variables // </editor-fold> }