/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package uk.chromis.pos.promotion; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.util.ArrayList; import java.util.List; import java.util.UUID; import javax.swing.DefaultListCellRenderer; import javax.swing.DefaultListSelectionModel; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.ListCellRenderer; import javax.swing.UIDefaults; import javax.swing.UIManager; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import org.apache.commons.lang.StringUtils; import uk.chromis.basic.BasicException; import uk.chromis.data.gui.ComboBoxValModel; import uk.chromis.data.gui.JMessageDialog; import uk.chromis.data.gui.ListValModel; import uk.chromis.data.gui.MessageInf; import uk.chromis.data.loader.Datas; import uk.chromis.data.loader.LocalRes; import uk.chromis.data.loader.SentenceList; import uk.chromis.data.user.DirtyManager; import uk.chromis.data.user.EditorRecord; import uk.chromis.pos.admin.DataLogicAdmin; import uk.chromis.pos.forms.AppLocal; import uk.chromis.pos.forms.AppView; import uk.chromis.pos.forms.DataLogicSystem; /** * * @author John */ public class PromotionEditor extends javax.swing.JPanel implements EditorRecord, ListSelectionListener { private final DirtyManager m_Dirty; DataLogicPromotions m_dlPromotions; DataLogicAdmin m_dlAdmin; DataLogicSystem m_dlSystem; private final AppView m_App; private String m_ID; private String m_criteria; private final int m_IndexID; private final int m_IndexName; private final int m_IndexCriteria; private final int m_IndexScript; private final int m_IndexEnabled; private final int m_IndexAllProducts; private SentenceList m_SentenceProducts; private ListValModel m_ModelProducts; private SentenceList m_SentenceResource; private ComboBoxValModel m_ModelResource; class ProductsListCellRenderer extends JComponent implements ListCellRenderer { Color listForeground, listBackground, listSelectionForeground, listSelectionBackground; DefaultListCellRenderer m_defaultRenderer; JCheckBox m_checkbox; JLabel m_Label; public ProductsListCellRenderer() { setLayout (new BorderLayout()); m_defaultRenderer = new DefaultListCellRenderer(); m_checkbox = new JCheckBox(); add (m_checkbox, BorderLayout.WEST); add (m_defaultRenderer, BorderLayout.CENTER); UIDefaults uid = UIManager.getLookAndFeel().getDefaults(); listForeground = uid.getColor ("List.foreground"); listBackground = uid.getColor ("List.background"); listSelectionForeground = uid.getColor ("List.selectionForeground"); listSelectionBackground = uid.getColor ("List.selectionBackground"); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Object [] avalues = (Object []) value; String name = (String) avalues[DataLogicPromotions.INDEX_PROMOTEDPRODUCT_NAME]; String ref = (String) avalues[DataLogicPromotions.INDEX_PROMOTEDPRODUCT_REFERENCE]; String product = ref + "-" + name; m_defaultRenderer.getListCellRendererComponent(list, product, index, isSelected, cellHasFocus); m_checkbox.setSelected (isSelected); Component[] comps = getComponents(); for (Component comp : comps) { comp.setForeground(listForeground); comp.setBackground(listBackground); } return this; } } /** Creates new form * @param app * @param dirty */ public PromotionEditor(AppView app, DirtyManager dirty) { initComponents(); m_dlPromotions = (DataLogicPromotions) app.getBean("uk.chromis.pos.promotion.DataLogicPromotions"); m_dlAdmin = (DataLogicAdmin) app.getBean("uk.chromis.pos.admin.DataLogicAdmin"); m_dlSystem = (DataLogicSystem) app.getBean("uk.chromis.pos.forms.DataLogicSystem"); m_App = app; m_Dirty = dirty; m_criteria = null; m_ID = null; m_IndexID = m_dlPromotions.getIndexOf("ID"); m_IndexName = m_dlPromotions.getIndexOf("NAME"); m_IndexCriteria = m_dlPromotions.getIndexOf("CRITERIA"); m_IndexScript = m_dlPromotions.getIndexOf("SCRIPT"); m_IndexEnabled = m_dlPromotions.getIndexOf("ISENABLED"); m_IndexAllProducts = m_dlPromotions.getIndexOf("ALLPRODUCTS"); m_ModelResource = new ComboBoxValModel(); jComboBoxResources.setModel(m_ModelResource); ListCellRenderer renderer = new ProductsListCellRenderer(); jListProducts.setCellRenderer(renderer); jListProducts.addListSelectionListener( this ); jListProducts.setSelectionModel(new DefaultListSelectionModel() { boolean gestureStarted = false; @Override public void setSelectionInterval(int index0, int index1) { if(!gestureStarted){ if (isSelectedIndex(index0)) { super.removeSelectionInterval(index0, index1); } else { super.addSelectionInterval(index0, index1); } } gestureStarted = true; } @Override public void setValueIsAdjusting(boolean isAdjusting) { if (isAdjusting == false) { gestureStarted = false; } } }); m_ModelProducts = new ListValModel(); jListProducts.setModel(m_ModelProducts); m_jName.getDocument().addDocumentListener(m_Dirty); m_jTextCriteria.getDocument().addDocumentListener(m_Dirty); m_jTextScript.getDocument().addDocumentListener(m_Dirty); jCheckBoxEnabled.addActionListener(m_Dirty); jCheckBoxAllProducts.addActionListener(m_Dirty); } /** * * @throws BasicException */ public void activate() throws BasicException { m_SentenceResource = m_dlPromotions.getResourceScriptListSentence(); m_ModelResource = new ComboBoxValModel( m_SentenceResource.list()); jComboBoxResources.setModel(m_ModelResource); } public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting() == false) { if( m_ID != null ) { m_Dirty.setDirty(true); } } } /** * */ @Override public void refresh() { if( m_ID != null ) { // Set Promotionid in the selected products List<Object> selected = jListProducts.getSelectedValuesList(); List<String> aProducts = new ArrayList<String>(); for(Object item : selected) { Object [] values = (Object []) item; aProducts.add( Datas.STRING.toString( values[ DataLogicPromotions.INDEX_PROMOTEDPRODUCT_ID ] ) ); } try { m_dlPromotions.resetPromotionID( m_ID, aProducts ); } catch (BasicException ex) { JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.cannotexecute"), ex)); } } } private void SelectAllProducts( Boolean bSelect ) { if( !bSelect ) { jListProducts.clearSelection(); } else { int end = m_ModelProducts.getSize() - 1; if (end >= 0) { jListProducts.addSelectionInterval(0, end); } } } private void enableAll( boolean b ) { m_jName.setEnabled(b); jCheckBoxEnabled.setEnabled(b); m_jTextScript.setEnabled(b); jComboBoxResources.setEnabled(b); jCheckBoxAllProducts.setEnabled(b); } /** * */ @Override public void writeValueEOF() { m_ID = null; m_criteria = null; showProducts(); m_jName.setText(null); m_jTextCriteria.setText(null); m_jTextScript.setText(null); jCheckBoxEnabled.setSelected(false); m_ModelResource.setSelectedKey(null); jCheckBoxAllProducts.setSelected(false); enableAll( false ); jButtonScript.setEnabled(false); } /** * */ @Override public void writeValueInsert() { m_ID = UUID.randomUUID().toString(); m_criteria = null; showProducts(); m_jName.setText(null); m_jTextCriteria.setText(null); m_jTextScript.setText(null); jCheckBoxEnabled.setSelected(false); m_ModelResource.setSelectedKey(null); jCheckBoxAllProducts.setSelected(false); SelectAllProducts( false ); enableAll( true ); jButtonScript.setEnabled(false); } private void showProducts() { boolean bDirtyFlag = m_Dirty.isDirty(); if( m_ID == null ) { m_ModelProducts = new ListValModel(); jListProducts.setModel(m_ModelProducts); } else { m_SentenceProducts = m_dlPromotions.getPromotedProductsSentence(m_ID, m_criteria ); try { m_ModelProducts = new ListValModel(m_SentenceProducts.list()); } catch (BasicException ex) { JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.cannotexecute"), ex)); } jListProducts.setModel(m_ModelProducts); int count = m_ModelProducts.getSize(); List<Integer> aIndexes = new ArrayList<Integer>(); for( int i = 0; i < count; ++i ) { Object [] avalues = (Object [] ) m_ModelProducts.getElementAt(i); String pid = (String) avalues[DataLogicPromotions.INDEX_PROMOTEDPRODUCT_PROMOTIONID]; if( pid != null && pid.contentEquals( m_ID )) { aIndexes.add(i); } } int list[] = new int[aIndexes.size()]; for( int i = 0; i < aIndexes.size(); ++i ) list[i] = aIndexes.get(i); jListProducts.setSelectedIndices( list ); } m_Dirty.setDirty( bDirtyFlag ); } private void valuesToControls( Object[] attrset ) { m_ID = m_dlPromotions.getFormatOf( m_IndexID ).formatValue(attrset[ m_IndexID ]); m_jName.setText( m_dlPromotions.getFormatOf( m_IndexName ).formatValue(attrset[ m_IndexName ])); m_jTextCriteria.setText( m_dlPromotions.getFormatOf( m_IndexCriteria ).formatValue(attrset[ m_IndexCriteria ])); m_jTextCriteria.setCaretPosition(0); m_criteria = m_jTextCriteria.getText(); m_jTextScript.setText( m_dlPromotions.getFormatOf( m_IndexScript ).formatValue(attrset[ m_IndexScript ])); m_jTextScript.setCaretPosition(0); jCheckBoxEnabled.setSelected( (Boolean) (attrset[ m_IndexEnabled ]) ); m_ModelResource.setSelectedKey(null); Boolean bAll = (Boolean) (attrset[ m_IndexAllProducts ]); jCheckBoxAllProducts.setSelected( bAll ); SetProductSelection( bAll == false ); showProducts(); } /** * * @param value */ @Override public void writeValueDelete(Object value) { Object[] attrset = (Object[]) value; valuesToControls( attrset ); enableAll( false ); jButtonScript.setEnabled(false); } /** * * @param value */ @Override public void writeValueEdit(Object value) { Object[] attrset = (Object[]) value; valuesToControls( attrset ); enableAll( true ); jButtonScript.setEnabled(false); } /** * * @return * @throws BasicException */ @Override public Object createValue() throws BasicException { Object[] attrset = new Object[ m_dlPromotions.getFieldCount()]; attrset[m_IndexID] = m_ID; attrset[m_IndexName] = m_jName.getText(); attrset[m_IndexScript] = m_dlPromotions.getFormatOf( m_IndexScript ).parseValue(m_jTextScript.getText()); attrset[m_IndexEnabled] = jCheckBoxEnabled.isSelected(); if( jCheckBoxAllProducts.isSelected() ) { attrset[m_IndexAllProducts] = true; attrset[m_IndexCriteria] = null; SelectAllProducts( false ); refresh(); } else { attrset[m_IndexAllProducts] = false; attrset[m_IndexCriteria] = m_dlPromotions.getFormatOf( m_IndexCriteria ).parseValue(m_jTextCriteria.getText()); } return attrset; } /** * * @return */ @Override public Component getComponent() { return this; } private boolean confirmOverWrite() { boolean result = false; if (JOptionPane.showConfirmDialog(this, LocalRes.getIntString("message.changeslost"), LocalRes.getIntString("Menu.Promotions"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) { result = true; } return result; } private void SetProductSelection( Boolean bEnable ) { // Enable/Disable the other product selection controls jLabel1.setEnabled(bEnable); jButtonHelp.setEnabled(bEnable); m_jTextCriteria.setEnabled(bEnable); jButtonTest.setEnabled(bEnable); jLabel5.setEnabled(bEnable); jButtonSelect.setEnabled(bEnable); jButtonDeselect.setEnabled(bEnable); jListProducts.setEnabled(bEnable); } /** * 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() { jLabel2 = new javax.swing.JLabel(); m_jName = new javax.swing.JTextField(); jPanelProducts = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jScrollPaneCriteria = new javax.swing.JScrollPane(); m_jTextCriteria = new javax.swing.JTextArea(); jButtonHelp = new javax.swing.JButton(); jButtonTest = new javax.swing.JButton(); jLabel5 = new javax.swing.JLabel(); jButtonSelect = new javax.swing.JButton(); jButtonDeselect = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); jListProducts = new javax.swing.JList(); jPanelScript = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jComboBoxResources = new javax.swing.JComboBox(); jScrollPaneScript = new javax.swing.JScrollPane(); m_jTextScript = new javax.swing.JTextArea(); jButtonScript = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jCheckBoxAllProducts = new eu.hansolo.custom.SteelCheckBox(); jCheckBoxEnabled = new eu.hansolo.custom.SteelCheckBox(); jLabel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel2.setText(AppLocal.getIntString("Label.Name")); // NOI18N m_jName.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel1.setText("Criteria"); m_jTextCriteria.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jTextCriteria.setLineWrap(true); m_jTextCriteria.setMaximumSize(null); jScrollPaneCriteria.setViewportView(m_jTextCriteria); m_jTextCriteria.getAccessibleContext().setAccessibleParent(jScrollPaneCriteria); jButtonHelp.setText("Help"); jButtonHelp.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonHelpActionPerformed(evt); } }); jButtonTest.setText("Run Query"); jButtonTest.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonTestActionPerformed(evt); } }); jLabel5.setText("Products included"); jButtonSelect.setText("All"); jButtonSelect.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonSelectActionPerformed(evt); } }); jButtonDeselect.setText("None"); jButtonDeselect.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonDeselectActionPerformed(evt); } }); jScrollPane1.setMaximumSize(null); jScrollPane1.setPreferredSize(new java.awt.Dimension(175, 130)); jScrollPane1.setRequestFocusEnabled(false); jListProducts.setMinimumSize(new java.awt.Dimension(104, 19)); jScrollPane1.setViewportView(jListProducts); javax.swing.GroupLayout jPanelProductsLayout = new javax.swing.GroupLayout(jPanelProducts); jPanelProducts.setLayout(jPanelProductsLayout); jPanelProductsLayout.setHorizontalGroup( jPanelProductsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelProductsLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelProductsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelProductsLayout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButtonHelp)) .addComponent(jScrollPaneCriteria, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelProductsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelProductsLayout.createSequentialGroup() .addComponent(jButtonTest) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 269, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelProductsLayout.createSequentialGroup() .addComponent(jLabel5) .addGap(48, 48, 48) .addComponent(jButtonSelect) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButtonDeselect)))) ); jPanelProductsLayout.setVerticalGroup( jPanelProductsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelProductsLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelProductsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelProductsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButtonDeselect) .addComponent(jButtonSelect) .addComponent(jLabel5) .addComponent(jButtonHelp)) .addComponent(jLabel1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelProductsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanelProductsLayout.createSequentialGroup() .addGroup(jPanelProductsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPaneCriteria, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonTest)) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); jLabel3.setText("Script"); jLabel4.setText("Available script resources:"); jComboBoxResources.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBoxResourcesActionPerformed(evt); } }); m_jTextScript.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jTextScript.setLineWrap(true); m_jTextScript.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { m_jTextScriptKeyTyped(evt); } }); jScrollPaneScript.setViewportView(m_jTextScript); m_jTextScript.getAccessibleContext().setAccessibleParent(jScrollPaneScript); jButtonScript.setText("Copy"); jButtonScript.setName(""); // NOI18N jButtonScript.setRolloverEnabled(false); jButtonScript.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonScriptActionPerformed(evt); } }); javax.swing.GroupLayout jPanelScriptLayout = new javax.swing.GroupLayout(jPanelScript); jPanelScript.setLayout(jPanelScriptLayout); jPanelScriptLayout.setHorizontalGroup( jPanelScriptLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelScriptLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelScriptLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPaneScript) .addGroup(jPanelScriptLayout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jComboBoxResources, javax.swing.GroupLayout.PREFERRED_SIZE, 286, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButtonScript))) .addContainerGap()) ); jPanelScriptLayout.setVerticalGroup( jPanelScriptLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelScriptLayout.createSequentialGroup() .addGroup(jPanelScriptLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButtonScript) .addComponent(jComboBoxResources, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel4) .addComponent(jLabel3)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPaneScript, javax.swing.GroupLayout.DEFAULT_SIZE, 152, Short.MAX_VALUE) .addContainerGap()) ); jPanel1.setPreferredSize(new java.awt.Dimension(143, 32)); jCheckBoxAllProducts.setText("All Products"); jCheckBoxAllProducts.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBoxAllProductsActionPerformed(evt); } }); jCheckBoxEnabled.setText("Enabled"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jCheckBoxAllProducts, javax.swing.GroupLayout.PREFERRED_SIZE, 111, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jCheckBoxEnabled, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jCheckBoxAllProducts, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jCheckBoxEnabled, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanelScript, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(layout.createSequentialGroup() .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(m_jName, javax.swing.GroupLayout.PREFERRED_SIZE, 338, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 273, Short.MAX_VALUE)) .addComponent(jPanelProducts, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()))) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jName, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jPanelProducts, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanelScript, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); }// </editor-fold>//GEN-END:initComponents private void jComboBoxResourcesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxResourcesActionPerformed String name = m_ModelResource.getSelectedText(); if( name != null && name.length() > 0 ) { jButtonScript.setEnabled(true); } else { jButtonScript.setEnabled(false); } }//GEN-LAST:event_jComboBoxResourcesActionPerformed private void jButtonScriptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonScriptActionPerformed String scriptname = m_ModelResource.getSelectedText(); if( scriptname != null && scriptname.length() > 0 ) { String script = m_dlSystem.getResourceAsText( scriptname ); if( script != null && script.length() > 0 ) { boolean replace = true; if( m_jTextScript.getText().length() > 0 ) { replace = confirmOverWrite(); } if( replace ) { m_jTextScript.setText( script ); if( StringUtils.isEmpty(m_jName.getText() ) ) { m_jName.setText(scriptname); } } } } }//GEN-LAST:event_jButtonScriptActionPerformed private void m_jTextScriptKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_m_jTextScriptKeyTyped m_ModelResource.setSelectedKey(null); }//GEN-LAST:event_m_jTextScriptKeyTyped private void jButtonHelpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonHelpActionPerformed JOptionPane.showMessageDialog( this, m_dlSystem.getResourceAsText( "help.promotion" ) ); }//GEN-LAST:event_jButtonHelpActionPerformed private void jButtonTestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonTestActionPerformed m_criteria = m_jTextCriteria.getText(); showProducts(); }//GEN-LAST:event_jButtonTestActionPerformed private void jButtonSelectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSelectActionPerformed SelectAllProducts(true); }//GEN-LAST:event_jButtonSelectActionPerformed private void jButtonDeselectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDeselectActionPerformed SelectAllProducts(false); }//GEN-LAST:event_jButtonDeselectActionPerformed private void jCheckBoxAllProductsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxAllProductsActionPerformed SetProductSelection( !(jCheckBoxAllProducts.isSelected() ) ); }//GEN-LAST:event_jCheckBoxAllProductsActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButtonDeselect; private javax.swing.JButton jButtonHelp; private javax.swing.JButton jButtonScript; private javax.swing.JButton jButtonSelect; private javax.swing.JButton jButtonTest; private eu.hansolo.custom.SteelCheckBox jCheckBoxAllProducts; private eu.hansolo.custom.SteelCheckBox jCheckBoxEnabled; private javax.swing.JComboBox jComboBoxResources; 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.JList jListProducts; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanelProducts; private javax.swing.JPanel jPanelScript; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPaneCriteria; private javax.swing.JScrollPane jScrollPaneScript; private javax.swing.JTextField m_jName; private javax.swing.JTextArea m_jTextCriteria; private javax.swing.JTextArea m_jTextScript; // End of variables declaration//GEN-END:variables }