addButton.setText( GuidedDecisionTableConstants.INSTANCE.NewColumn() );
addButton.setTitle( GuidedDecisionTableConstants.INSTANCE.AddNewColumn() );
addButton.addClickHandler( new ClickHandler() {
public void onClick( ClickEvent w ) {
final FormStylePopup pop = new FormStylePopup();
pop.setModal( false );
//List of basic column types
final ListBox choice = new ListBox();
choice.setVisibleItemCount( NewColumnTypes.values().length );
choice.setWidth( ( Window.getClientWidth() * 0.25 ) + "px" );
choice.addItem( GuidedDecisionTableConstants.INSTANCE.AddNewMetadataOrAttributeColumn(),
NewColumnTypes.METADATA_ATTRIBUTE.name() );
choice.addItem( SECTION_SEPARATOR );
choice.addItem( GuidedDecisionTableConstants.INSTANCE.AddNewConditionSimpleColumn(),
NewColumnTypes.CONDITION_SIMPLE.name() );
choice.addItem( SECTION_SEPARATOR );
choice.addItem( GuidedDecisionTableConstants.INSTANCE.SetTheValueOfAField(),
NewColumnTypes.ACTION_UPDATE_FACT_FIELD.name() );
choice.addItem( GuidedDecisionTableConstants.INSTANCE.SetTheValueOfAFieldOnANewFact(),
NewColumnTypes.ACTION_INSERT_FACT_FIELD.name() );
choice.addItem( GuidedDecisionTableConstants.INSTANCE.RetractAnExistingFact(),
NewColumnTypes.ACTION_RETRACT_FACT.name() );
//Checkbox to include Advanced Action types
final CheckBox chkIncludeAdvancedOptions = new CheckBox( SafeHtmlUtils.fromString( GuidedDecisionTableConstants.INSTANCE.IncludeAdvancedOptions() ) );
chkIncludeAdvancedOptions.setValue( false );
chkIncludeAdvancedOptions.addClickHandler( new ClickHandler() {
public void onClick( ClickEvent event ) {
if ( chkIncludeAdvancedOptions.getValue() ) {
addItem( 3,
GuidedDecisionTableConstants.INSTANCE.AddNewConditionBRLFragment(),
NewColumnTypes.CONDITION_BRL_FRAGMENT.name() );
addItem( GuidedDecisionTableConstants.INSTANCE.WorkItemAction(),
NewColumnTypes.ACTION_WORKITEM.name() );
addItem( GuidedDecisionTableConstants.INSTANCE.WorkItemActionSetField(),
NewColumnTypes.ACTION_WORKITEM_UPDATE_FACT_FIELD.name() );
addItem( GuidedDecisionTableConstants.INSTANCE.WorkItemActionInsertFact(),
NewColumnTypes.ACTION_WORKITEM_INSERT_FACT_FIELD.name() );
addItem( GuidedDecisionTableConstants.INSTANCE.AddNewActionBRLFragment(),
NewColumnTypes.ACTION_BRL_FRAGMENT.name() );
} else {
removeItem( NewColumnTypes.CONDITION_BRL_FRAGMENT.name() );
removeItem( NewColumnTypes.ACTION_WORKITEM.name() );
removeItem( NewColumnTypes.ACTION_WORKITEM_UPDATE_FACT_FIELD.name() );
removeItem( NewColumnTypes.ACTION_WORKITEM_INSERT_FACT_FIELD.name() );
removeItem( NewColumnTypes.ACTION_BRL_FRAGMENT.name() );
}
pop.center();
}
private void addItem( int index,
String item,
String value ) {
for ( int itemIndex = 0; itemIndex < choice.getItemCount(); itemIndex++ ) {
if ( choice.getValue( itemIndex ).equals( value ) ) {
return;
}
}
choice.insertItem( item,
value,
index );
}
private void addItem( String item,
String value ) {
for ( int itemIndex = 0; itemIndex < choice.getItemCount(); itemIndex++ ) {
if ( choice.getValue( itemIndex ).equals( value ) ) {
return;
}
}
choice.addItem( item,
value );
}
private void removeItem( String value ) {
for ( int itemIndex = 0; itemIndex < choice.getItemCount(); itemIndex++ ) {
if ( choice.getValue( itemIndex ).equals( value ) ) {
choice.removeItem( itemIndex );
break;
}
}
}
} );
//OK button to create column
final Button ok = new Button( GuidedDecisionTableConstants.INSTANCE.OK() );
ok.addClickHandler( new ClickHandler() {
public void onClick( ClickEvent w ) {
String s = choice.getValue( choice.getSelectedIndex() );
if ( s.equals( NewColumnTypes.METADATA_ATTRIBUTE.name() ) ) {
showMetaDataAndAttribute();
} else if ( s.equals( NewColumnTypes.CONDITION_SIMPLE.name() ) ) {
showConditionSimple();
} else if ( s.equals( NewColumnTypes.CONDITION_BRL_FRAGMENT.name() ) ) {
showConditionBRLFragment();
} else if ( s.equals( NewColumnTypes.ACTION_UPDATE_FACT_FIELD.name() ) ) {
showActionSet();
} else if ( s.equals( NewColumnTypes.ACTION_INSERT_FACT_FIELD.name() ) ) {
showActionInsert();
} else if ( s.equals( NewColumnTypes.ACTION_RETRACT_FACT.name() ) ) {
showActionRetract();
} else if ( s.equals( NewColumnTypes.ACTION_WORKITEM.name() ) ) {
showActionWorkItemAction();
} else if ( s.equals( NewColumnTypes.ACTION_WORKITEM_UPDATE_FACT_FIELD.name() ) ) {
showActionWorkItemActionSet();
} else if ( s.equals( NewColumnTypes.ACTION_WORKITEM_INSERT_FACT_FIELD.name() ) ) {
showActionWorkItemActionInsert();
} else if ( s.equals( NewColumnTypes.ACTION_BRL_FRAGMENT.name() ) ) {
showActionBRLFragment();
}
pop.hide();
}
private void showMetaDataAndAttribute() {
// show choice of attributes
final Image image = GuidedDecisionTableImageResources508.INSTANCE.Config();
final FormStylePopup pop = new FormStylePopup( image,
GuidedDecisionTableConstants.INSTANCE.AddAnOptionToTheRule() );
final ListBox list = RuleAttributeWidget.getAttributeList();
//This attribute is only used for Decision Tables
list.addItem( GuidedDecisionTable52.NEGATE_RULE_ATTR );
// Remove any attributes already added
for ( AttributeCol52 col : model.getAttributeCols() ) {
for ( int iItem = 0; iItem < list.getItemCount(); iItem++ ) {
if ( list.getItemText( iItem ).equals( col.getAttribute() ) ) {
list.removeItem( iItem );
break;
}
}
}
final Image addbutton = GuidedDecisionTableImageResources508.INSTANCE.NewItem();
final TextBox box = new TextBox();
box.setVisibleLength( 15 );
list.setSelectedIndex( 0 );
list.addChangeHandler( new ChangeHandler() {
public void onChange( ChangeEvent event ) {
AttributeCol52 attr = new AttributeCol52();
attr.setAttribute( list.getItemText( list.getSelectedIndex() ) );
dtable.addColumn( attr );
refreshAttributeWidget();
pop.hide();
}
} );
addbutton.setTitle( GuidedDecisionTableConstants.INSTANCE.AddMetadataToTheRule() );
addbutton.addClickHandler( new ClickHandler() {
public void onClick( ClickEvent w ) {
String metadata = box.getText();
if ( !isUnique( metadata ) ) {
Window.alert( GuidedDecisionTableConstants.INSTANCE.ThatColumnNameIsAlreadyInUsePleasePickAnother() );
return;
}
MetadataCol52 met = new MetadataCol52();
met.setHideColumn( true );
met.setMetadata( metadata );
dtable.addColumn( met );
refreshAttributeWidget();
pop.hide();
}
private boolean isUnique( String metadata ) {
for ( MetadataCol52 mc : model.getMetadataCols() ) {
if ( metadata.equals( mc.getMetadata() ) ) {
return false;
}
}
return true;
}
} );
DirtyableHorizontalPane horiz = new DirtyableHorizontalPane();
horiz.add( box );
horiz.add( addbutton );
pop.addAttribute( GuidedDecisionTableConstants.INSTANCE.Metadata1(),
horiz );
pop.addAttribute( GuidedDecisionTableConstants.INSTANCE.Attribute(),
list );
pop.show();
}
private void showConditionSimple() {
final ConditionCol52 column = makeNewConditionColumn();
ConditionPopup dialog = new ConditionPopup( oracle,
model,
new ConditionColumnCommand() {
public void execute( Pattern52 pattern,
ConditionCol52 column ) {
//Update UI
dtable.addColumn( pattern,
column );
refreshConditionsWidget();
}
},
column,
true,
isReadOnly );
dialog.show();
}
private void showConditionBRLFragment() {
final BRLConditionColumn column = makeNewConditionBRLFragment();
switch ( model.getTableFormat() ) {
case EXTENDED_ENTRY:
BRLConditionColumnViewImpl popup = new BRLConditionColumnViewImpl( path,
oracle,
model,
column,
eventBus,
true,
isReadOnly );
popup.setPresenter( BRL_CONDITION_PRESENTER );
popup.show();
break;
case LIMITED_ENTRY:
LimitedEntryBRLConditionColumnViewImpl limtedEntryPopup = new LimitedEntryBRLConditionColumnViewImpl( path,
oracle,
model,
(LimitedEntryBRLConditionColumn) column,
eventBus,
true,
isReadOnly );
limtedEntryPopup.setPresenter( LIMITED_ENTRY_BRL_CONDITION_PRESENTER );
limtedEntryPopup.show();
break;
}
}
private void showActionInsert() {
final ActionInsertFactCol52 afc = makeNewActionInsertColumn();
ActionInsertFactPopup ins = new ActionInsertFactPopup( oracle,
model,
new GenericColumnCommand() {
public void execute( DTColumnConfig52 column ) {
newActionAdded( (ActionCol52) column );
}
},
afc,
true,
isReadOnly );
ins.show();
}
private void showActionSet() {
final ActionSetFieldCol52 afc = makeNewActionSetColumn();
ActionSetFieldPopup set = new ActionSetFieldPopup( oracle,
model,
new GenericColumnCommand() {
public void execute( DTColumnConfig52 column ) {
newActionAdded( (ActionCol52) column );
}
},
afc,
true,
isReadOnly );
set.show();
}
private void showActionRetract() {
final ActionRetractFactCol52 arf = makeNewActionRetractFact();
ActionRetractFactPopup popup = new ActionRetractFactPopup( model,
new GenericColumnCommand() {
public void execute( DTColumnConfig52 column ) {
newActionAdded( (ActionCol52) column );
}
},
arf,
true,
isReadOnly );
popup.show();
}
private void showActionWorkItemAction() {
final ActionWorkItemCol52 awi = makeNewActionWorkItem();
ActionWorkItemPopup popup = new ActionWorkItemPopup( path,
model,
GuidedDecisionTableWidget.this,
new GenericColumnCommand() {
public void execute( DTColumnConfig52 column ) {
newActionAdded( (ActionCol52) column );
}
},
awi,
workItemDefinitions,
true,
isReadOnly );
popup.show();
}
private void showActionWorkItemActionSet() {
final ActionWorkItemSetFieldCol52 awisf = makeNewActionWorkItemSetField();
ActionWorkItemSetFieldPopup popup = new ActionWorkItemSetFieldPopup( oracle,
model,
new GenericColumnCommand() {
public void execute( DTColumnConfig52 column ) {
newActionAdded( (ActionCol52) column );
}
},
awisf,
true,
isReadOnly );
popup.show();
}
private void showActionWorkItemActionInsert() {
final ActionWorkItemInsertFactCol52 awiif = makeNewActionWorkItemInsertFact();
ActionWorkItemInsertFactPopup popup = new ActionWorkItemInsertFactPopup( oracle,
model,
new GenericColumnCommand() {
public void execute( DTColumnConfig52 column ) {
newActionAdded( (ActionCol52) column );
}
},
awiif,
true,
isReadOnly );
popup.show();
}
private void showActionBRLFragment() {
final BRLActionColumn column = makeNewActionBRLFragment();
switch ( model.getTableFormat() ) {
case EXTENDED_ENTRY:
BRLActionColumnViewImpl popup = new BRLActionColumnViewImpl( path,
oracle,
model,
column,
eventBus,
true,
isReadOnly );
popup.setPresenter( BRL_ACTION_PRESENTER );
popup.show();
break;
case LIMITED_ENTRY:
LimitedEntryBRLActionColumnViewImpl limtedEntryPopup = new LimitedEntryBRLActionColumnViewImpl( path,
oracle,
model,
(LimitedEntryBRLActionColumn) column,
eventBus,
true,
isReadOnly );
limtedEntryPopup.setPresenter( LIMITED_ENTRY_BRL_ACTION_PRESENTER );
limtedEntryPopup.show();
break;
}
}
private void newActionAdded( ActionCol52 column ) {
dtable.addColumn( column );
refreshActionsWidget();
}
} );
//If a separator is clicked disable OK button
choice.addClickHandler( new ClickHandler() {
public void onClick( ClickEvent event ) {
int itemIndex = choice.getSelectedIndex();
if ( itemIndex < 0 ) {
return;
}
ok.setEnabled( !choice.getValue( itemIndex ).equals( SECTION_SEPARATOR ) );
}
} );
pop.setTitle( GuidedDecisionTableConstants.INSTANCE.AddNewColumn() );
pop.addAttribute( GuidedDecisionTableConstants.INSTANCE.TypeOfColumn(),
choice );
pop.addAttribute( "",
chkIncludeAdvancedOptions );
pop.addAttribute( "",
ok );
pop.show();
}
private ConditionCol52 makeNewConditionColumn() {
switch ( model.getTableFormat() ) {
case LIMITED_ENTRY: