Program: 148876
Project: 148876
Buggy source:
@Override protected void createCharacteristicsContent(final FormToolkit toolkit,Composite topComposite){
  try {
    port=Util.getPort(getXObject());
    transformer=(WSTransformerV2)getXObject().getWsObject();
    Composite descriptionComposite=toolkit.createComposite(topComposite,SWT.NONE);
    descriptionComposite.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,1,1));
    descriptionComposite.setLayout(new GridLayout(3,false));
    Label descriptionLabel=toolkit.createLabel(descriptionComposite,"String_Node_Str",SWT.NULL);
    descriptionLabel.setLayoutData(new GridData(SWT.FILL,SWT.CENTER,false,true,1,1));
    descriptionText=toolkit.createText(descriptionComposite,"String_Node_Str",SWT.BORDER | SWT.MULTI);
    descriptionText.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,1,1));
    ((GridData)descriptionText.getLayoutData()).minimumHeight=30;
    descriptionText.addModifyListener(new ModifyListener(){
      public void modifyText(      ModifyEvent e){
        if (refreshing)         return;
        TransformerMainPage.this.comitting=true;
        transformer.setDescription(descriptionText.getText());
        TransformerMainPage.this.comitting=false;
        markDirtyWithoutCommit();
      }
    }
);
    Button processButton=toolkit.createButton(descriptionComposite,"String_Node_Str",SWT.PUSH);
    processButton.setLayoutData(new GridData(SWT.BEGINNING,SWT.CENTER,false,false,1,1));
    processButton.setImage(ImageCache.getCreatedImage(EImage.RUN_EXC.getPath()));
    processButton.setToolTipText("String_Node_Str");
    processButton.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      org.eclipse.swt.events.SelectionEvent e){
      }
      public void widgetSelected(      org.eclipse.swt.events.SelectionEvent e){
        try {
          WSTransformerProcessStep[] steps=transformer.getProcessSteps();
          if ((steps == null) || (steps.length == 0)) {
            MessageDialog.openError(TransformerMainPage.this.getSite().getShell(),"String_Node_Str","String_Node_Str");
            return;
          }
          if (TransformerMainPage.this.getEditor().isDirty()) {
            if (MessageDialog.openConfirm(TransformerMainPage.this.getSite().getShell(),"String_Node_Str","String_Node_Str"))             TransformerMainPage.this.getEditor().doSave(new NullProgressMonitor());
          }
          if (transformerDialog == null) {
            transformerDialog=new SetupTransformerInputVariablesDialog(TransformerMainPage.this.getSite().getShell(),toolkit,getXObject(),TransformerMainPage.this);
            transformerDialog.create();
            transformerDialog.getShell().setText("String_Node_Str");
          }
          transformerDialog.open();
        }
 catch (        Exception ex) {
          ex.printStackTrace();
        }
      }
    }
);
    windowTarget=new DropTarget(this.getPartControl(),DND.DROP_MOVE);
    windowTarget.setTransfer(new Transfer[]{TextTransfer.getInstance()});
    windowTarget.addDropListener(new DCDropTargetListener());
    Composite sequenceGroup=this.getNewSectionComposite("String_Node_Str");
    sequenceGroup.setLayout(new GridLayout(1,false));
    Composite sequenceComposite=toolkit.createComposite(sequenceGroup,SWT.NONE);
    sequenceComposite.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,1,1));
    sequenceComposite.setLayout(new GridLayout(6,false));
    Label l3=toolkit.createLabel(sequenceComposite,"String_Node_Str",SWT.NULL);
    l3.setLayoutData(new GridData(SWT.FILL,SWT.CENTER,false,true,1,1));
    stepText=toolkit.createText(sequenceComposite,"String_Node_Str",SWT.BORDER | SWT.SINGLE);
    stepText.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,4,1));
    stepText.addKeyListener(new KeyListener(){
      public void keyPressed(      KeyEvent e){
      }
      public void keyReleased(      KeyEvent e){
        if (e.keyCode == 13) {
          performAdd();
          int index=stepsList.getItemCount() - 1;
          performSelect(index);
        }
      }
    }
);
    Button addStepButton=toolkit.createButton(sequenceComposite,"String_Node_Str",SWT.PUSH);
    addStepButton.setLayoutData(new GridData(SWT.CENTER,SWT.FILL,false,true,1,1));
    addStepButton.setToolTipText("String_Node_Str");
    addStepButton.setImage(ImageCache.getCreatedImage(EImage.ADD_OBJ.getPath()));
    addStepButton.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      org.eclipse.swt.events.SelectionEvent e){
      }
      public void widgetSelected(      org.eclipse.swt.events.SelectionEvent e){
        performAdd();
      }
    }
);
    stepsList=new List(sequenceComposite,SWT.V_SCROLL | SWT.BORDER);
    stepsList.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,5,1));
    ((GridData)stepsList.getLayoutData()).heightHint=40;
    stepsList.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      SelectionEvent e){
        widgetSelected(e);
      }
      public void widgetSelected(      SelectionEvent e){
        performSelect(stepsList.getSelectionIndex());
      }
    }
);
    wrap.Wrap(this,stepsList);
    stepsList.addFocusListener(new FocusListener(){
      public void focusGained(      FocusEvent e){
        if (stepsList.getSelectionIndex() >= 0) {
          refreshStep(stepsList.getSelectionIndex());
          section.setVisible(true);
        }
      }
      public void focusLost(      FocusEvent e){
      }
    }
);
    Composite stepUpDownComposite=toolkit.createComposite(sequenceComposite,SWT.NONE);
    stepUpDownComposite.setLayoutData(new GridData(SWT.FILL,SWT.FILL,false,true,1,1));
    stepUpDownComposite.setLayout(new GridLayout(1,false));
    Button stepUpButton=toolkit.createButton(stepUpDownComposite,"String_Node_Str",SWT.PUSH | SWT.CENTER);
    stepUpButton.setLayoutData(new GridData(SWT.FILL,SWT.FILL,false,true,1,1));
    stepUpButton.setImage(ImageCache.getCreatedImage(EImage.PREV_NAV.getPath()));
    stepUpButton.setToolTipText("String_Node_Str");
    stepUpButton.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      org.eclipse.swt.events.SelectionEvent e){
      }
      public void widgetSelected(      org.eclipse.swt.events.SelectionEvent e){
        int index=TransformerMainPage.this.stepsList.getSelectionIndex();
        if (index > 0) {
          TransformerMainPage.this.comitting=true;
          String val=TransformerMainPage.this.stepsList.getItem(index);
          TransformerMainPage.this.stepsList.remove(index);
          TransformerMainPage.this.stepsList.add(val,index - 1);
          TransformerMainPage.this.stepsList.select(index - 1);
          WSTransformerV2 wsTransformer=transformer;
          ArrayList<WSTransformerProcessStep> list=new ArrayList<WSTransformerProcessStep>(Arrays.asList(wsTransformer.getProcessSteps()));
          WSTransformerProcessStep spec=list.get(index);
          list.remove(index);
          list.add(index - 1,spec);
          performSelect(index - 1);
          wsTransformer.setProcessSteps(list.toArray(new WSTransformerProcessStep[list.size()]));
          TransformerMainPage.this.comitting=false;
          TransformerMainPage.this.stepsList.forceFocus();
          markDirty();
        }
      }
    }
);
    Button stepDownButton=toolkit.createButton(stepUpDownComposite,"String_Node_Str",SWT.PUSH | SWT.CENTER);
    stepDownButton.setLayoutData(new GridData(SWT.FILL,SWT.FILL,false,true,1,1));
    stepDownButton.setImage(ImageCache.getCreatedImage(EImage.NEXT_NAV.getPath()));
    stepDownButton.setToolTipText("String_Node_Str");
    stepDownButton.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      org.eclipse.swt.events.SelectionEvent e){
      }
      public void widgetSelected(      org.eclipse.swt.events.SelectionEvent e){
        int index=TransformerMainPage.this.stepsList.getSelectionIndex();
        if ((index >= 0) && (index < TransformerMainPage.this.stepsList.getItemCount() - 1)) {
          TransformerMainPage.this.comitting=true;
          String val=TransformerMainPage.this.stepsList.getItem(index);
          TransformerMainPage.this.stepsList.remove(index);
          TransformerMainPage.this.stepsList.add(val,index + 1);
          TransformerMainPage.this.stepsList.select(index + 1);
          WSTransformerV2 wsTransformer=transformer;
          ArrayList<WSTransformerProcessStep> list=new ArrayList<WSTransformerProcessStep>(Arrays.asList(wsTransformer.getProcessSteps()));
          WSTransformerProcessStep spec=list.get(index);
          list.remove(index);
          list.add(index + 1,spec);
          wsTransformer.setProcessSteps(list.toArray(new WSTransformerProcessStep[list.size()]));
          TransformerMainPage.this.comitting=false;
          TransformerMainPage.this.stepsList.forceFocus();
          markDirty();
        }
      }
    }
);
    Button deleteStepButton=toolkit.createButton(stepUpDownComposite,"String_Node_Str",SWT.PUSH | SWT.CENTER);
    deleteStepButton.setLayoutData(new GridData(SWT.FILL,SWT.FILL,false,true,1,1));
    deleteStepButton.setImage(ImageCache.getCreatedImage(EImage.DELETE_OBJ.getPath()));
    deleteStepButton.setToolTipText("String_Node_Str");
    deleteStepButton.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      org.eclipse.swt.events.SelectionEvent e){
      }
      public void widgetSelected(      org.eclipse.swt.events.SelectionEvent e){
        int index=TransformerMainPage.this.stepsList.getSelectionIndex();
        if ((index >= 0) && (index < TransformerMainPage.this.stepsList.getItemCount())) {
          removeStep(index);
        }
      }
    }
);
    section=this.getNewSection("String_Node_Str");
    section.setVisible(false);
    sequenceGroup.setLayout(new GridLayout(4,false));
    disabledButton=toolkit.createButton((Composite)section.getClient(),"String_Node_Str",SWT.CHECK);
    disabledButton.setLayoutData(new GridData(SWT.LEFT,SWT.FILL,false,true,4,1));
    specsComposite=toolkit.createComposite((Composite)section.getClient(),SWT.NULL);
    specsComposite.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,1,1));
    specsComposite.setLayout(new GridLayout(4,false));
    disabledButton.addSelectionListener(new SelectionAdapter(){
      @Override public void widgetSelected(      SelectionEvent e){
        WidgetUtils.enable(specsComposite,!disabledButton.getSelection());
        markDirty();
        if (stepsList.getSelectionIndex() >= 0)         transformer.getProcessSteps()[stepsList.getSelectionIndex()].setDisabled(disabledButton.getSelection());
      }
    }
);
    stepLabel=toolkit.createLabel(specsComposite,"String_Node_Str",SWT.NULL);
    stepLabel.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,4,1));
    FontData fd=stepLabel.getFont().getFontData()[0];
    fd.setStyle(SWT.BOLD);
    stepLabel.setFont(new Font(Display.getDefault(),fd));
    stepWidget=new TransformerStepWidget(toolkit,specsComposite);
    stepWidget.create();
    Group parametersGroup=new Group(specsComposite,SWT.SHADOW_NONE);
    parametersGroup.setText("String_Node_Str");
    parametersGroup.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,4,1));
    ((GridData)parametersGroup.getLayoutData()).minimumHeight=300;
    parametersGroup.setLayout(new GridLayout(1,true));
    parametersTextViewer=new SourceViewer(parametersGroup,new VerticalRuler(10),SWT.V_SCROLL);
    parametersTextViewer.getControl().setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,4,1));
    WidgetUtils.initRedoUndo(parametersTextViewer);
    parametersTextViewer.addTextListener(new ITextListener(){
      public void textChanged(      TextEvent event){
        if (refreshing)         return;
        if (TransformerMainPage.this.stepsList.getSelectionIndex() == -1)         return;
        TransformerMainPage.this.comitting=true;
        transformer.getProcessSteps()[stepsList.getSelectionIndex()].setParameters(parametersTextViewer.getDocument().get());
        TransformerMainPage.this.comitting=false;
        markDirty();
      }
    }
);
    parametersTextViewer.getTextWidget().addKeyListener(new KeyListener(){
      public void keyReleased(      KeyEvent event){
        System.out.println(event.stateMask == SWT.CTRL);
        System.out.println("String_Node_Str" + event.stateMask);
        System.out.println("String_Node_Str" + event.keyCode);
        int start=parametersTextViewer.getSelectedRange().x;
        int end=parametersTextViewer.getSelectedRange().y;
        int length=parametersTextViewer.getDocument().get().length();
        if (event.stateMask == SWT.CTRL && event.keyCode == 17) {
          try {
            ResourceSelectDialog dialog=new ResourceSelectDialog(getSite().getShell(),null,"String_Node_Str",ServerView.show().getSite());
            dialog.setBlockOnOpen(true);
            dialog.open();
            String xpath=dialog.getXpath();
            String textHead=parametersTextViewer.getDocument().get(0,start);
            String textEnd=parametersTextViewer.getDocument().get(start + end,length - start - end);
            parametersTextViewer.setDocument(new Document(textHead + xpath + textEnd));
            parametersTextViewer.setSelectedRange(start,xpath.length());
            markDirtyWithoutCommit();
          }
 catch (          BadLocationException e) {
            e.printStackTrace();
          }
        }
      }
      @Override public void keyPressed(      KeyEvent event){
      }
    }
);
    refreshData();
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
}

Fixed version (ground truth):
@Override protected void createCharacteristicsContent(final FormToolkit toolkit,Composite topComposite){
  try {
    port=Util.getPort(getXObject());
    transformer=(WSTransformerV2)getXObject().getWsObject();
    Composite descriptionComposite=toolkit.createComposite(topComposite,SWT.NONE);
    descriptionComposite.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,1,1));
    descriptionComposite.setLayout(new GridLayout(3,false));
    Label descriptionLabel=toolkit.createLabel(descriptionComposite,"String_Node_Str",SWT.NULL);
    descriptionLabel.setLayoutData(new GridData(SWT.FILL,SWT.CENTER,false,true,1,1));
    descriptionText=toolkit.createText(descriptionComposite,"String_Node_Str",SWT.BORDER | SWT.MULTI);
    descriptionText.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,1,1));
    ((GridData)descriptionText.getLayoutData()).minimumHeight=30;
    descriptionText.addModifyListener(new ModifyListener(){
      public void modifyText(      ModifyEvent e){
        if (refreshing)         return;
        TransformerMainPage.this.comitting=true;
        transformer.setDescription(descriptionText.getText());
        TransformerMainPage.this.comitting=false;
        markDirtyWithoutCommit();
      }
    }
);
    Button processButton=toolkit.createButton(descriptionComposite,"String_Node_Str",SWT.PUSH);
    processButton.setLayoutData(new GridData(SWT.BEGINNING,SWT.CENTER,false,false,1,1));
    processButton.setImage(ImageCache.getCreatedImage(EImage.RUN_EXC.getPath()));
    processButton.setToolTipText("String_Node_Str");
    processButton.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      org.eclipse.swt.events.SelectionEvent e){
      }
      public void widgetSelected(      org.eclipse.swt.events.SelectionEvent e){
        try {
          WSTransformerProcessStep[] steps=transformer.getProcessSteps();
          if ((steps == null) || (steps.length == 0)) {
            MessageDialog.openError(TransformerMainPage.this.getSite().getShell(),"String_Node_Str","String_Node_Str");
            return;
          }
          if (TransformerMainPage.this.getEditor().isDirty()) {
            if (MessageDialog.openConfirm(TransformerMainPage.this.getSite().getShell(),"String_Node_Str","String_Node_Str"))             TransformerMainPage.this.getEditor().doSave(new NullProgressMonitor());
          }
          if (transformerDialog == null) {
            transformerDialog=new SetupTransformerInputVariablesDialog(TransformerMainPage.this.getSite().getShell(),toolkit,getXObject(),TransformerMainPage.this);
            transformerDialog.create();
            transformerDialog.getShell().setText("String_Node_Str");
          }
          transformerDialog.open();
        }
 catch (        Exception ex) {
          ex.printStackTrace();
        }
      }
    }
);
    windowTarget=new DropTarget(this.getPartControl(),DND.DROP_MOVE);
    windowTarget.setTransfer(new Transfer[]{TextTransfer.getInstance()});
    windowTarget.addDropListener(new DCDropTargetListener());
    Composite sequenceGroup=this.getNewSectionComposite("String_Node_Str");
    sequenceGroup.setLayout(new GridLayout(1,false));
    Composite sequenceComposite=toolkit.createComposite(sequenceGroup,SWT.NONE);
    sequenceComposite.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,1,1));
    sequenceComposite.setLayout(new GridLayout(6,false));
    Label l3=toolkit.createLabel(sequenceComposite,"String_Node_Str",SWT.NULL);
    l3.setLayoutData(new GridData(SWT.FILL,SWT.CENTER,false,true,1,1));
    stepText=toolkit.createText(sequenceComposite,"String_Node_Str",SWT.BORDER | SWT.SINGLE);
    stepText.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,4,1));
    stepText.addKeyListener(new KeyListener(){
      public void keyPressed(      KeyEvent e){
      }
      public void keyReleased(      KeyEvent e){
        if (e.keyCode == 13) {
          performAdd();
          int index=stepsList.getItemCount() - 1;
          performSelect(index);
        }
      }
    }
);
    Button addStepButton=toolkit.createButton(sequenceComposite,"String_Node_Str",SWT.PUSH);
    addStepButton.setLayoutData(new GridData(SWT.CENTER,SWT.FILL,false,true,1,1));
    addStepButton.setToolTipText("String_Node_Str");
    addStepButton.setImage(ImageCache.getCreatedImage(EImage.ADD_OBJ.getPath()));
    addStepButton.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      org.eclipse.swt.events.SelectionEvent e){
      }
      public void widgetSelected(      org.eclipse.swt.events.SelectionEvent e){
        performAdd();
      }
    }
);
    stepsList=new List(sequenceComposite,SWT.V_SCROLL | SWT.BORDER);
    stepsList.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,5,1));
    ((GridData)stepsList.getLayoutData()).heightHint=40;
    stepsList.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      SelectionEvent e){
        widgetSelected(e);
      }
      public void widgetSelected(      SelectionEvent e){
        performSelect(stepsList.getSelectionIndex());
      }
    }
);
    wrap.Wrap(this,stepsList);
    stepsList.addFocusListener(new FocusListener(){
      public void focusGained(      FocusEvent e){
        if (stepsList.getSelectionIndex() >= 0) {
          refreshStep(stepsList.getSelectionIndex());
          section.setVisible(true);
        }
      }
      public void focusLost(      FocusEvent e){
      }
    }
);
    Composite stepUpDownComposite=toolkit.createComposite(sequenceComposite,SWT.NONE);
    stepUpDownComposite.setLayoutData(new GridData(SWT.FILL,SWT.FILL,false,true,1,1));
    stepUpDownComposite.setLayout(new GridLayout(1,false));
    Button stepUpButton=toolkit.createButton(stepUpDownComposite,"String_Node_Str",SWT.PUSH | SWT.CENTER);
    stepUpButton.setLayoutData(new GridData(SWT.FILL,SWT.FILL,false,true,1,1));
    stepUpButton.setImage(ImageCache.getCreatedImage(EImage.PREV_NAV.getPath()));
    stepUpButton.setToolTipText("String_Node_Str");
    stepUpButton.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      org.eclipse.swt.events.SelectionEvent e){
      }
      public void widgetSelected(      org.eclipse.swt.events.SelectionEvent e){
        int index=TransformerMainPage.this.stepsList.getSelectionIndex();
        if (index > 0) {
          TransformerMainPage.this.comitting=true;
          String val=TransformerMainPage.this.stepsList.getItem(index);
          TransformerMainPage.this.stepsList.remove(index);
          TransformerMainPage.this.stepsList.add(val,index - 1);
          TransformerMainPage.this.stepsList.select(index - 1);
          WSTransformerV2 wsTransformer=transformer;
          ArrayList<WSTransformerProcessStep> list=new ArrayList<WSTransformerProcessStep>(Arrays.asList(wsTransformer.getProcessSteps()));
          WSTransformerProcessStep spec=list.get(index);
          list.remove(index);
          list.add(index - 1,spec);
          performSelect(index - 1);
          wsTransformer.setProcessSteps(list.toArray(new WSTransformerProcessStep[list.size()]));
          TransformerMainPage.this.comitting=false;
          TransformerMainPage.this.stepsList.forceFocus();
          markDirty();
        }
      }
    }
);
    Button stepDownButton=toolkit.createButton(stepUpDownComposite,"String_Node_Str",SWT.PUSH | SWT.CENTER);
    stepDownButton.setLayoutData(new GridData(SWT.FILL,SWT.FILL,false,true,1,1));
    stepDownButton.setImage(ImageCache.getCreatedImage(EImage.NEXT_NAV.getPath()));
    stepDownButton.setToolTipText("String_Node_Str");
    stepDownButton.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      org.eclipse.swt.events.SelectionEvent e){
      }
      public void widgetSelected(      org.eclipse.swt.events.SelectionEvent e){
        int index=TransformerMainPage.this.stepsList.getSelectionIndex();
        if ((index >= 0) && (index < TransformerMainPage.this.stepsList.getItemCount() - 1)) {
          TransformerMainPage.this.comitting=true;
          String val=TransformerMainPage.this.stepsList.getItem(index);
          TransformerMainPage.this.stepsList.remove(index);
          TransformerMainPage.this.stepsList.add(val,index + 1);
          TransformerMainPage.this.stepsList.select(index + 1);
          WSTransformerV2 wsTransformer=transformer;
          ArrayList<WSTransformerProcessStep> list=new ArrayList<WSTransformerProcessStep>(Arrays.asList(wsTransformer.getProcessSteps()));
          WSTransformerProcessStep spec=list.get(index);
          list.remove(index);
          list.add(index + 1,spec);
          wsTransformer.setProcessSteps(list.toArray(new WSTransformerProcessStep[list.size()]));
          TransformerMainPage.this.comitting=false;
          TransformerMainPage.this.stepsList.forceFocus();
          markDirty();
        }
      }
    }
);
    Button deleteStepButton=toolkit.createButton(stepUpDownComposite,"String_Node_Str",SWT.PUSH | SWT.CENTER);
    deleteStepButton.setLayoutData(new GridData(SWT.FILL,SWT.FILL,false,true,1,1));
    deleteStepButton.setImage(ImageCache.getCreatedImage(EImage.DELETE_OBJ.getPath()));
    deleteStepButton.setToolTipText("String_Node_Str");
    deleteStepButton.addSelectionListener(new SelectionListener(){
      public void widgetDefaultSelected(      org.eclipse.swt.events.SelectionEvent e){
      }
      public void widgetSelected(      org.eclipse.swt.events.SelectionEvent e){
        int index=TransformerMainPage.this.stepsList.getSelectionIndex();
        if ((index >= 0) && (index < TransformerMainPage.this.stepsList.getItemCount())) {
          removeStep(index);
        }
      }
    }
);
    section=this.getNewSection("String_Node_Str");
    section.setVisible(false);
    sequenceGroup.setLayout(new GridLayout(4,false));
    disabledButton=toolkit.createButton((Composite)section.getClient(),"String_Node_Str",SWT.CHECK);
    disabledButton.setLayoutData(new GridData(SWT.LEFT,SWT.FILL,false,true,4,1));
    specsComposite=toolkit.createComposite((Composite)section.getClient(),SWT.NULL);
    specsComposite.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,1,1));
    specsComposite.setLayout(new GridLayout(4,false));
    disabledButton.addSelectionListener(new SelectionAdapter(){
      @Override public void widgetSelected(      SelectionEvent e){
        WidgetUtils.enable(specsComposite,!disabledButton.getSelection());
        markDirty();
        if (stepsList.getSelectionIndex() >= 0)         transformer.getProcessSteps()[stepsList.getSelectionIndex()].setDisabled(disabledButton.getSelection());
      }
    }
);
    stepLabel=toolkit.createLabel(specsComposite,"String_Node_Str",SWT.NULL);
    stepLabel.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,4,1));
    FontData fd=stepLabel.getFont().getFontData()[0];
    fd.setStyle(SWT.BOLD);
    stepLabel.setFont(new Font(Display.getDefault(),fd));
    stepWidget=new TransformerStepWidget(toolkit,specsComposite);
    stepWidget.create();
    Group parametersGroup=new Group(specsComposite,SWT.SHADOW_NONE);
    parametersGroup.setText("String_Node_Str");
    parametersGroup.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,4,1));
    ((GridData)parametersGroup.getLayoutData()).minimumHeight=300;
    parametersGroup.setLayout(new GridLayout(1,true));
    parametersTextViewer=new SourceViewer(parametersGroup,new VerticalRuler(10),SWT.V_SCROLL);
    parametersTextViewer.getControl().setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,4,1));
    WidgetUtils.initRedoUndo(parametersTextViewer);
    parametersTextViewer.addTextListener(new ITextListener(){
      public void textChanged(      TextEvent event){
        if (refreshing)         return;
        if (TransformerMainPage.this.stepsList.getSelectionIndex() == -1)         return;
        TransformerMainPage.this.comitting=true;
        transformer.getProcessSteps()[stepsList.getSelectionIndex()].setParameters(parametersTextViewer.getDocument().get());
        TransformerMainPage.this.comitting=false;
        markDirty();
      }
    }
);
    parametersTextViewer.getTextWidget().addKeyListener(new KeyListener(){
      public void keyReleased(      KeyEvent event){
        int start=parametersTextViewer.getSelectedRange().x;
        int end=parametersTextViewer.getSelectedRange().y;
        int length=parametersTextViewer.getDocument().get().length();
        if (event.stateMask == SWT.CTRL && event.keyCode == 17) {
          try {
            ResourceSelectDialog dialog=new ResourceSelectDialog(getSite().getShell(),null,"String_Node_Str",ServerView.show().getSite());
            dialog.setBlockOnOpen(true);
            dialog.open();
            if (dialog.getReturnCode() == Window.OK) {
              String xpath=dialog.getXpath();
              String textHead=parametersTextViewer.getDocument().get(0,start);
              String textEnd=parametersTextViewer.getDocument().get(start + end,length - start - end);
              parametersTextViewer.setDocument(new Document(textHead + xpath + textEnd));
              parametersTextViewer.setSelectedRange(start,xpath.length());
              markDirtyWithoutCommit();
            }
          }
 catch (          BadLocationException e) {
            e.printStackTrace();
          }
        }
      }
      @Override public void keyPressed(      KeyEvent event){
      }
    }
);
    refreshData();
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
}