F-1: Design-time GUI support for new features implemented for runtime
authorLixin Tang <ltang@netbeans.org>
Mon, 28 Jul 2008 17:02:04 -0700
changeset 4829d488885f7198
parent 4828 6ad7a0572a32
child 4830 a5624c8b9e5b
F-1: Design-time GUI support for new features implemented for runtime
This checkin contains support for:
10) Support for begin delimiter (which may or may not be anchored) for fixed length fields
by implementing a text editing entry of "Begin Delimiter" and a boolean checkbox of "Begin Delimiter Detached"
for a fixedLength field
encoder.custom.aip/src/org/netbeans/modules/encoder/custom/aip/Bundle.properties
encoder.custom.aip/src/org/netbeans/modules/encoder/custom/aip/EncodingNode.java
encoder.custom.aip/src/org/netbeans/modules/encoder/custom/aip/EncodingOption.java
     1.1 --- a/encoder.custom.aip/src/org/netbeans/modules/encoder/custom/aip/Bundle.properties	Mon Jul 28 12:09:42 2008 -0700
     1.2 +++ b/encoder.custom.aip/src/org/netbeans/modules/encoder/custom/aip/Bundle.properties	Mon Jul 28 17:02:04 2008 -0700
     1.3 @@ -70,6 +70,8 @@
     1.4  encoding_node.lbl.node_type=Node Type
     1.5  encoding_node.lbl.encoding_style_short=Encoding Style
     1.6  encoding_node.lbl.encoding_style=Encoding Style
     1.7 +encoding_node.lbl.begin_delimiter=Begin Delimiter
     1.8 +encoding_node.lbl.begin_delimiter_detached=Begin Delimiter Detached
     1.9  
    1.10  delim_tree_tab.lbl.length_short=Length
    1.11  delim_tree_tab.lbl.length=Length for embedded delimiter
    1.12 @@ -96,9 +98,9 @@
    1.13  delim_tree_tab.lbl.collapse_short=Collapse
    1.14  delim_tree_tab.lbl.collapse=Collapse matched identical consecutive delimiters into one
    1.15  delim_tree_tab.lbl.detached_short=Detached
    1.16 -delim_tree_tab.lbl.detached=Non-Anchored delimiter does not have to appear at fixed position
    1.17 +delim_tree_tab.lbl.detached=Detached (non-anchored) delimiter does not have to appear at fixed position
    1.18  delim_tree_tab.lbl.begin_detached_short=BegDetached
    1.19 -delim_tree_tab.lbl.begin_detached=Non-Anchored begin delimiter does not have to appear at fixed position
    1.20 +delim_tree_tab.lbl.begin_detached=Detached (non-anchored) begin delimiter does not have to appear at fixed position
    1.21  
    1.22  delim_set_pe.lbl.not_specified=not specified
    1.23  delim_set_pe.lbl.levels={0,number,integer} levels
     2.1 --- a/encoder.custom.aip/src/org/netbeans/modules/encoder/custom/aip/EncodingNode.java	Mon Jul 28 12:09:42 2008 -0700
     2.2 +++ b/encoder.custom.aip/src/org/netbeans/modules/encoder/custom/aip/EncodingNode.java	Mon Jul 28 17:02:04 2008 -0700
     2.3 @@ -245,6 +245,24 @@
     2.4                  propSet.put(lengthProp);
     2.5              }
     2.6  
     2.7 +            if (NodeProperties.NodeType.FIXED_LENGTH.equals(mEncodingOption.xgetNodeType())) {
     2.8 +                PropertySupport.Reflection<String> beginDelimiterProp =
     2.9 +                        new PropertySupport.Reflection<String>(mEncodingOption,
    2.10 +                                String.class, "beginDelimiter");  //NOI18N
    2.11 +                beginDelimiterProp.setName("beginDelimiter");  //NOI18N
    2.12 +                beginDelimiterProp.setDisplayName(_bundle.getString("encoding_node.lbl.begin_delimiter"));
    2.13 +                propSet.put(beginDelimiterProp);
    2.14 +            }
    2.15 +                
    2.16 +            if (NodeProperties.NodeType.FIXED_LENGTH.equals(mEncodingOption.xgetNodeType())) {
    2.17 +                PropertySupport.Reflection<Boolean> beginDelimiterDetachedProp =
    2.18 +                        new PropertySupport.Reflection<Boolean>(mEncodingOption,
    2.19 +                                boolean.class, "beginDelimiterDetached");  //NOI18N
    2.20 +                beginDelimiterDetachedProp.setName("beginDelimiterDetached");  //NOI18N
    2.21 +                beginDelimiterDetachedProp.setDisplayName(_bundle.getString("encoding_node.lbl.begin_delimiter_detached"));
    2.22 +                propSet.put(beginDelimiterDetachedProp);
    2.23 +            }
    2.24 +                
    2.25              if (NodeProperties.NodeType.DELIMITED.equals(mEncodingOption.xgetNodeType())
    2.26                      || NodeProperties.NodeType.ARRAY.equals(mEncodingOption.xgetNodeType())) {
    2.27                  PropertySupport.Reflection<String> delimiterProp =
    2.28 @@ -255,15 +273,6 @@
    2.29                  propSet.put(delimiterProp);
    2.30              }
    2.31              
    2.32 -            if (NodeProperties.NodeType.FIXED_LENGTH.equals(mEncodingOption.xgetNodeType())) {
    2.33 -                PropertySupport.Reflection<Integer> lengthProp =
    2.34 -                        new PropertySupport.Reflection<Integer>(mEncodingOption,
    2.35 -                                int.class, "length");  //NOI18N
    2.36 -                lengthProp.setName("length");  //NOI18N
    2.37 -                lengthProp.setDisplayName(_bundle.getString("encoding_node.lbl.length"));
    2.38 -                propSet.put(lengthProp);
    2.39 -            }
    2.40 -                
    2.41              if (mEncodingOption.testIsGlobal() && mEncodingOption.isTop()) {
    2.42                  //The Escape Sequence Property
    2.43                  PropertySupport.Reflection<String> escapeSequenceProp =
    2.44 @@ -290,6 +299,11 @@
    2.45          return sheet;
    2.46      }
    2.47  
    2.48 +    /**
    2.49 +     * This method gets called when a bound property is changed.
    2.50 +     * @param evt A PropertyChangeEvent object describing the event source 
    2.51 +     *   	and the property that has changed.
    2.52 +     */
    2.53      public void propertyChange(PropertyChangeEvent evt) {
    2.54          if (mChangeSheetPropNames.contains(evt.getPropertyName())) {
    2.55              setSheet(createSheet());
     3.1 --- a/encoder.custom.aip/src/org/netbeans/modules/encoder/custom/aip/EncodingOption.java	Mon Jul 28 12:09:42 2008 -0700
     3.2 +++ b/encoder.custom.aip/src/org/netbeans/modules/encoder/custom/aip/EncodingOption.java	Mon Jul 28 17:02:04 2008 -0700
     3.3 @@ -24,6 +24,7 @@
     3.4  import com.sun.encoder.custom.appinfo.DelimiterLevel;
     3.5  import com.sun.encoder.custom.appinfo.DelimiterSet;
     3.6  import com.sun.encoder.custom.appinfo.NodeProperties;
     3.7 +import com.sun.encoder.custom.appinfo.NodeProperties.DelimOfFixed;
     3.8  import com.sun.encoder.runtime.provider.Misc;
     3.9  import java.beans.PropertyChangeEvent;
    3.10  import java.beans.PropertyChangeListener;
    3.11 @@ -169,6 +170,8 @@
    3.12      private boolean mNoMatch = false;
    3.13      private String mAlignment = mTextMap.get(ALIGNMENT_PREFIX + "_" + NodeProperties.Alignment.BLIND); //NOI18N
    3.14      private int mLength = 0;
    3.15 +    private String mBeginDelimiter = ""; //NOI18N
    3.16 +    private boolean mBeginDelimiterDetached = true;
    3.17      private String mEscapeSequence = ""; //NOI18N
    3.18      private boolean mFineInherit = false;
    3.19      
    3.20 @@ -294,6 +297,46 @@
    3.21          firePropertyChange("length", old, Integer.valueOf(mLength)); //NOI18N
    3.22      }
    3.23  
    3.24 +    public String getBeginDelimiter() {
    3.25 +        return mBeginDelimiter;
    3.26 +    }
    3.27 +
    3.28 +    public void setBeginDelimiter(String beginDelimiter) {
    3.29 +        String old = mBeginDelimiter;
    3.30 +        mBeginDelimiter = beginDelimiter;
    3.31 +        if (mBeginDelimiter == null || mBeginDelimiter.length() == 0) {
    3.32 +            // if empty delimiter is set, then remove the "delimOfFixed" element
    3.33 +            if (mCustomEncoding.getNodeProperties().isSetDelimOfFixed()) {
    3.34 +                mCustomEncoding.getNodeProperties().unsetDelimOfFixed();
    3.35 +            }
    3.36 +        } else {
    3.37 +            if (!mCustomEncoding.getNodeProperties().isSetDelimOfFixed()) {
    3.38 +                mCustomEncoding.getNodeProperties().addNewDelimOfFixed();
    3.39 +            }
    3.40 +            mCustomEncoding.getNodeProperties().getDelimOfFixed().setBeginBytes(mBeginDelimiter);
    3.41 +        }
    3.42 +        commitToAppInfo();
    3.43 +        firePropertyChange("beginDelimiter", old, mBeginDelimiter); //NOI18N
    3.44 +    }
    3.45 +
    3.46 +    public boolean getBeginDelimiterDetached() {
    3.47 +        return mBeginDelimiterDetached;
    3.48 +    }
    3.49 +
    3.50 +    public void setBeginDelimiterDetached(boolean beginDelimiterDetached) {
    3.51 +        if (!mCustomEncoding.getNodeProperties().isSetDelimOfFixed()) {
    3.52 +            // do nothing so that as if user can not 
    3.53 +            // check the "Begin Delimiter Detached" because the 
    3.54 +            // "Begin Delimiter" field is not set any value yet.
    3.55 +            return;
    3.56 +        }
    3.57 +        boolean old = mBeginDelimiterDetached;
    3.58 +        mBeginDelimiterDetached = beginDelimiterDetached;
    3.59 +        mCustomEncoding.getNodeProperties().getDelimOfFixed().setBeginAnch(!mBeginDelimiterDetached);
    3.60 +        commitToAppInfo();
    3.61 +        firePropertyChange("beginDelimiterDetached", old, mBeginDelimiterDetached); //NOI18N
    3.62 +    }
    3.63 +
    3.64      public String getMatch() {
    3.65          return mMatch;
    3.66      }
    3.67 @@ -811,6 +854,13 @@
    3.68          if (customEncoding.getNodeProperties().isSetLength()) {
    3.69              mLength = customEncoding.getNodeProperties().getLength();
    3.70          }
    3.71 +        if (customEncoding.getNodeProperties().isSetDelimOfFixed()) {
    3.72 +            DelimOfFixed delimOfFixed = customEncoding.getNodeProperties().getDelimOfFixed();
    3.73 +            mBeginDelimiter = delimOfFixed.getBeginBytes();
    3.74 +            if (delimOfFixed.isSetBeginAnch()) {
    3.75 +                mBeginDelimiterDetached = !delimOfFixed.getBeginAnch();
    3.76 +            }
    3.77 +        }
    3.78          if (customEncoding.getNodeProperties().isSetDelimiterSet()) {
    3.79              mDelimiterSet = customEncoding.getNodeProperties().getDelimiterSet();
    3.80          }