}
};
String lbl = "<div class='form-field'>" + HumanReadable.getCEDisplayName( "from accumulate" ) + "</div>";
DirtyableFlexTable panel = new DirtyableFlexTable();
int r = 0;
if ( pattern.getFactPattern() == null ) {
panel.setWidget( r++,
0,
new ClickableLabel( "<br> <font color='red'>" + GuidedRuleEditorResources.CONSTANTS.clickToAddPattern() + "</font>",
leftPatternclick,
!this.readOnly ) );
}
panel.setWidget( r++,
0,
new HTML( lbl ) );
if ( this.getFromAccumulatePattern().getSourcePattern() == null ) {
panel.setWidget( r++,
0,
new ClickableLabel( "<br> <font color='red'>" + GuidedRuleEditorResources.CONSTANTS.clickToAddPattern() + "</font>",
sourcePatternClick,
!this.readOnly ) );
} else {
IPattern rPattern = this.getFromAccumulatePattern().getSourcePattern();
RuleModellerWidget sourcePatternWidget;
if ( rPattern instanceof FactPattern ) {
sourcePatternWidget = new FactPatternWidget( this.getModeller(),
getEventBus(),
rPattern,
true,
true,
this.readOnly );
} else if ( rPattern instanceof FromAccumulateCompositeFactPattern ) {
sourcePatternWidget = new FromAccumulateCompositeFactPatternWidget( this.getModeller(),
this.getEventBus(),
(FromAccumulateCompositeFactPattern) rPattern,
this.readOnly );
} else if ( rPattern instanceof FromCollectCompositeFactPattern ) {
sourcePatternWidget = new FromCollectCompositeFactPatternWidget( this.getModeller(),
this.getEventBus(),
(FromCollectCompositeFactPattern) rPattern,
this.readOnly );
} else if ( rPattern instanceof FromEntryPointFactPattern ) {
sourcePatternWidget = new FromEntryPointFactPatternWidget( this.getModeller(),
this.getEventBus(),
(FromEntryPointFactPattern) rPattern,
this.readOnly );
} else if ( rPattern instanceof FromCompositeFactPattern ) {
sourcePatternWidget = new FromCompositeFactPatternWidget( this.getModeller(),
this.getEventBus(),
(FromCompositeFactPattern) rPattern,
this.readOnly );
} else {
throw new IllegalArgumentException( "Unsupported pattern "
+ rPattern + " for right side of FROM ACCUMULATE" );
}
sourcePatternWidget.addOnModifiedCommand( new Command() {
public void execute() {
setModified( true );
}
} );
panel.setWidget( r++,
0,
addRemoveButton( sourcePatternWidget,
new ClickHandler() {
public void onClick( ClickEvent event ) {
if ( Window.confirm( GuidedRuleEditorResources.CONSTANTS.RemoveThisBlockOfData() ) ) {
setModified( true );
getFromAccumulatePattern().setSourcePattern( null );
getModeller().refreshWidget();
}
}
} ) );
}
//REVISIT: Nested TabLayoutPanel does not work, its content is truncated.
//TabLayoutPanel tPanel = new TabLayoutPanel(2, Unit.EM);
TabPanel tPanel = new TabPanel();
DirtyableFlexTable codeTable = new DirtyableFlexTable();
int codeTableRow = 0;
int codeTableCol = 0;
codeTable.setWidget( codeTableRow,
codeTableCol++,
new HTML( "<div class='form-field'>" + GuidedRuleEditorResources.CONSTANTS.Init() + ":</div>" ) );
final TextBox initField = new TextBox();
initField.setTitle( GuidedRuleEditorResources.CONSTANTS.InitCode() );
initField.setText( getFromAccumulatePattern().getInitCode() );
initField.setEnabled( !this.readOnly );
codeTable.setWidget( codeTableRow++,
codeTableCol--,
initField );
codeTable.setWidget( codeTableRow,
codeTableCol++,
new HTML( "<div class='form-field'>" + GuidedRuleEditorResources.CONSTANTS.Action() + ":</div>" ) );
final TextBox actionField = new TextBox();
actionField.setTitle( GuidedRuleEditorResources.CONSTANTS.ActionCode() );
actionField.setText( getFromAccumulatePattern().getActionCode() );
actionField.setEnabled( !this.readOnly );
codeTable.setWidget( codeTableRow++,
codeTableCol--,
actionField );
codeTable.setWidget( codeTableRow,
codeTableCol++,
new HTML( "<div class='form-field'>" + GuidedRuleEditorResources.CONSTANTS.Reverse() + ":</div>" ) );
final TextBox reverseField = new TextBox();
reverseField.setTitle( GuidedRuleEditorResources.CONSTANTS.ReverseCode() );
reverseField.setText( getFromAccumulatePattern().getReverseCode() );
reverseField.setEnabled( !this.readOnly );
codeTable.setWidget( codeTableRow++,
codeTableCol--,
reverseField );
codeTable.setWidget( codeTableRow,
codeTableCol++,
new HTML( "<div class='form-field'>" + GuidedRuleEditorResources.CONSTANTS.Result() + ":</div>" ) );
final TextBox resultField = new TextBox();
resultField.setTitle( GuidedRuleEditorResources.CONSTANTS.ResultCode() );
resultField.setText( getFromAccumulatePattern().getResultCode() );
resultField.setEnabled( !this.readOnly );
codeTable.setWidget( codeTableRow++,
codeTableCol--,
resultField );
//panel.setWidget(r++, 0, codeTable);
ScrollPanel codePanel = new ScrollPanel();
codePanel.add( codeTable );
tPanel.add( codePanel,
GuidedRuleEditorResources.CONSTANTS.CustomCode() );
DirtyableFlexTable functionTable = new DirtyableFlexTable();
functionTable.setWidget( 0,
0,
new HTML( "<div class='form-field'>" + GuidedRuleEditorResources.CONSTANTS.Function() + ":</div>" ) );
final TextBox functionField = new TextBox();
functionField.setTitle( GuidedRuleEditorResources.CONSTANTS.FunctionCode() );
functionField.setText( getFromAccumulatePattern().getFunction() );
functionField.setEnabled( !this.readOnly );
functionTable.setWidget( 0,
1,
functionField );
// panel.setWidget(r++, 0, functionTable);