//Each Pattern is a row in a vertical panel
final VerticalPanel patternsPanel = new VerticalPanel();
//Wire-up DnD for Patterns. All DnD related widgets must be contained in the AbsolutePanel
AbsolutePanel patternsBoundaryPanel = new AbsolutePanel();
PickupDragController patternsDragController = new PickupDragController( patternsBoundaryPanel,
false );
patternsDragController.setBehaviorConstrainedToBoundaryPanel( false );
VerticalPanelDropController widgetDropController = new VerticalPanelDropController( patternsPanel );
patternsDragController.registerDropController( widgetDropController );
//Add DnD container to main Conditions container
conditionsConfigWidget.add( patternsBoundaryPanel );
patternsBoundaryPanel.add( patternsPanel );
//Add a DragHandler to handle the actions resulting from the drag operation
patternsDragController.addDragHandler( new PatternDragHandler( patternsPanel,
model,
dtable ) );
List<CompositeColumn<? extends BaseColumn>> columns = model.getConditions();
boolean arePatternsDraggable = columns.size() > 1 && !isReadOnly;
for ( CompositeColumn<?> column : columns ) {
if ( column instanceof Pattern52 ) {
Pattern52 p = (Pattern52) column;
VerticalPanel patternPanel = new VerticalPanel();
VerticalPanel conditionsPanel = new VerticalPanel();
HorizontalPanel patternHeaderPanel = new HorizontalPanel();
patternHeaderPanel.setStylePrimaryName( GuidedDecisionTableResources.INSTANCE.css().patternSectionHeader() );
Label patternLabel = makePatternLabel( p );
patternHeaderPanel.add( patternLabel );
patternPanel.add( patternHeaderPanel );
patternsPanel.add( patternPanel );
//Wire-up DnD for Conditions. All DnD related widgets must be contained in the AbsolutePanel
AbsolutePanel conditionsBoundaryPanel = new AbsolutePanel();
PickupDragController conditionsDragController = new PickupDragController( conditionsBoundaryPanel,
false );
conditionsDragController.setBehaviorConstrainedToBoundaryPanel( false );
VerticalPanelDropController conditionsDropController = new VerticalPanelDropController( conditionsPanel );
conditionsDragController.registerDropController( conditionsDropController );
//Add DnD container to main Conditions container
conditionsBoundaryPanel.add( conditionsPanel );
patternPanel.add( conditionsBoundaryPanel );
//Add a DragHandler to handle the actions resulting from the drag operation
conditionsDragController.addDragHandler( new ConditionDragHandler( conditionsPanel,
p,
dtable ) );
List<ConditionCol52> conditions = p.getChildColumns();
boolean bAreConditionsDraggable = conditions.size() > 1 && !isReadOnly;
for ( ConditionCol52 c : p.getChildColumns() ) {
HorizontalPanel hp = new HorizontalPanel();
hp.setStylePrimaryName( GuidedDecisionTableResources.INSTANCE.css().patternConditionSectionHeader() );
if ( !isReadOnly ) {
hp.add( removeCondition( c ) );
}
hp.add( editCondition( p,
c ) );
SmallLabel conditionLabel = makeColumnLabel( c );
hp.add( conditionLabel );
conditionsPanel.add( hp );
if ( bAreConditionsDraggable ) {
conditionsDragController.makeDraggable( hp,
conditionLabel );
}
}
if ( arePatternsDraggable ) {