[jboss-svn-commits] JBL Code SVN: r8531 - in labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client: common modeldriven/ui
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Dec 21 17:28:48 EST 2006
Author: michael.neale at jboss.com
Date: 2006-12-21 17:28:42 -0500 (Thu, 21 Dec 2006)
New Revision: 8531
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java
Log:
added rule attribute editor.
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java 2006-12-21 22:27:29 UTC (rev 8530)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java 2006-12-21 22:28:42 UTC (rev 8531)
@@ -21,15 +21,24 @@
private FlexCellFormatter formatter = layout.getFlexCellFormatter();
private int numInLayout = 0;
+ /**
+ * Create a new layout with a header and and icon.
+ */
public FormStyleLayout(String image, String title) {
addHeader( image, title );
initWidget( layout );
}
+
+ /** This has no header */
+ public FormStyleLayout() {
+ initWidget( layout );
+ }
+
/**
* Add a widget to the "form".
*/
- protected void addAttribute(String lbl,
+ public void addAttribute(String lbl,
Widget editor) {
Label label = new Label(lbl);
layout.setWidget( numInLayout, 0, label );
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java 2006-12-21 22:27:29 UTC (rev 8530)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java 2006-12-21 22:28:42 UTC (rev 8531)
@@ -1,10 +1,8 @@
package org.drools.brms.client.common;
-import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.PopupPanel;
-import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
/**
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java 2006-12-21 22:27:29 UTC (rev 8530)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java 2006-12-21 22:28:42 UTC (rev 8531)
@@ -1,7 +1,78 @@
package org.drools.brms.client.modeldriven.ui;
+import org.drools.brms.client.common.FormStyleLayout;
+import org.drools.brms.client.common.YesNoDialog;
+import org.drools.brms.client.modeldriven.model.RuleAttribute;
+import org.drools.brms.client.modeldriven.model.RuleModel;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+/**
+ * Displays a list of rule options (attributes).
+ *
+ * @author Michael Neale
+ */
public class RuleAttributeWidget extends Composite {
+ private FormStyleLayout layout;
+ private RuleModel model;
+ private RuleModeller parent;
+
+ public RuleAttributeWidget(RuleModeller parent, RuleModel model) {
+ this.parent = parent;
+ this.model = model;
+ layout = new FormStyleLayout();
+ RuleAttribute[] attrs = model.attributes;
+ for ( int i = 0; i < attrs.length; i++ ) {
+ RuleAttribute at = attrs[i];
+ layout.addAttribute( at.attributeName, getEditorWidget(at, i));
+ }
+
+ initWidget( layout );
+ }
+
+ private Widget getEditorWidget(final RuleAttribute at, final int idx) {
+ if (at.attributeName.equals( "no-loop" )) {
+ return getRemoveIcon( idx );
+ }
+
+ final TextBox box = new TextBox();
+ box.setVisibleLength( (at.value.length() < 3) ? 3 : at.value.length() );
+ box.setText( at.value );
+ box.addChangeListener( new ChangeListener() {
+ public void onChange(Widget w) {
+ at.value = box.getText();
+ }
+ });
+ HorizontalPanel horiz = new HorizontalPanel();
+ horiz.add( box );
+ horiz.add( getRemoveIcon( idx ) );
+
+ return horiz;
+ }
+
+ private Image getRemoveIcon(final int idx) {
+ Image remove = new Image( "images/delete_item_small.gif" );
+ remove.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ YesNoDialog diag = new YesNoDialog("Remove this rule option?", new Command() {
+ public void execute() {
+ model.removeAttribute( idx);
+ parent.refreshWidget();
+ }
+ });
+ diag.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+ diag.show();
+ }
+ } );
+ return remove;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java 2006-12-21 22:27:29 UTC (rev 8530)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java 2006-12-21 22:28:42 UTC (rev 8531)
@@ -15,6 +15,7 @@
import org.drools.brms.client.modeldriven.model.FactPattern;
import org.drools.brms.client.modeldriven.model.IAction;
import org.drools.brms.client.modeldriven.model.IPattern;
+import org.drools.brms.client.modeldriven.model.RuleAttribute;
import org.drools.brms.client.modeldriven.model.RuleModel;
import com.google.gwt.user.client.Command;
@@ -86,9 +87,55 @@
layout.setWidget( 2, 2, addAction );
layout.setWidget( 3, 1, renderRhs(this.model) );
+
+ layout.setWidget( 4, 0, new Label("(options)") );
+ layout.setWidget( 4, 2, getAddAttribute() );
+ layout.setWidget( 5, 1, new RuleAttributeWidget(this, this.model) );
+
}
+ private Widget getAddAttribute() {
+ Image add = new Image("images/new_item.gif");
+ add.setTitle( "Add an option to the rule, to modify its behavior when evaluated or executed." );
+
+ add.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ showAttributeSelector(w);
+ }
+ });
+ return add;
+ }
+
+ protected void showAttributeSelector(Widget w) {
+ final FormStylePopup pop = new FormStylePopup("images/config.png", "Add an option to the rule");
+ final ListBox list = new ListBox();
+ list.addItem( "Choose..." );
+
+ list.addItem( "salience" );
+ list.addItem( "no-loop" );
+ list.addItem( "agenda-group" );
+ list.addItem( "activation-group" );
+ list.addItem( "duration" );
+ list.addItem( "auto-focus" );
+
+ list.setSelectedIndex( 0 );
+
+ list.addChangeListener( new ChangeListener() {
+ public void onChange(Widget w) {
+ model.addAttribute( new RuleAttribute(list.getItemText( list.getSelectedIndex() ), "") );
+ refreshWidget();
+ pop.hide();
+ }
+ });
+
+ pop.setStyleName( "ks-popups-Popup" );
+
+ pop.addAttribute( "Attribute", list );
+ pop.setPopupPosition( w.getAbsoluteLeft() - 400, w.getAbsoluteTop() );
+ pop.show();
+ }
+
/**
* Do all the widgets for the RHS.
*/
More information about the jboss-svn-commits
mailing list