[jboss-svn-commits] JBL Code SVN: r7076 - labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 24 08:47:10 EDT 2006


Author: stevearoonie
Date: 2006-10-24 08:47:05 -0400 (Tue, 24 Oct 2006)
New Revision: 7076

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/MergeAction.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/MergeDialog.java
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/EditableDTGrid.java
Log:
Add ability to merge cells

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/EditableDTGrid.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/EditableDTGrid.java	2006-10-24 11:39:11 UTC (rev 7075)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/EditableDTGrid.java	2006-10-24 12:47:05 UTC (rev 7076)
@@ -33,6 +33,7 @@
 	private static final int DELETE_COLUMN_OFFSET = INSERT_COLUMN_OFFSET + 1;
 	private static final int SHUFFLE_UP_COLUMN_OFFSET = DELETE_COLUMN_OFFSET + 1;
 	private static final int SHUFFLE_DOWN_COLUMN_OFFSET = SHUFFLE_UP_COLUMN_OFFSET + 1;
+	private static final int MERGE_COLUMN_OFFSET = SHUFFLE_DOWN_COLUMN_OFFSET + 1;
 
 	private FlexTable table = new FlexTable();
 
@@ -120,6 +121,7 @@
 		addDeleteAction(currentRow);
 		addShuffleUpAction(currentRow);
 		addShuffleDownAction(currentRow);
+		addMergeAction(currentRow);
 	}
 
 	private void addShuffleDownAction(final int currentRow) {
@@ -163,6 +165,22 @@
 		table.setWidget(currentRow, numCols() + DELETE_COLUMN_OFFSET, deleteAction);
 	}
 
+	private void addMergeAction(final int currentRow) {
+		final MergeAction mergeAction = new MergeAction(currentRow,
+				new RowClickListener() {
+			public void onClick(Widget w, int row) {
+				showMergeRowDialog(row);
+			}
+		});
+		table.setWidget(currentRow, numCols() + MERGE_COLUMN_OFFSET, mergeAction);
+	}
+	
+	protected void showMergeRowDialog(int row) {
+		MergeDialog dialog = new MergeDialog(this, row);
+		dialog.setPopupPosition(200, 200);
+		dialog.show();		
+	}
+	
 	private void addInsertAction(final int currentRow) {
 		final InsertAction insertAction = new InsertAction(currentRow,
 				new RowClickListener() {
@@ -173,6 +191,15 @@
 		table.setWidget(currentRow, numCols() + INSERT_COLUMN_OFFSET, insertAction);
 	}
 
+	protected void merge(int row, String startCol, String endCol) {
+		int startColumn = Integer.parseInt(startCol);
+		int endColumn = Integer.parseInt(endCol) + 1;
+		cellFormatter.setColSpan(row, startColumn, endColumn - startColumn);
+		for (int i = startColumn + 1; i < endColumn; i++) {
+			table.removeCell(row, i);
+		}
+	}
+
 	private void addEditActions(final int currentRow, boolean newRow) {
 		final EditActions actions = new EditActions(currentRow,
 				new RowClickListener() {

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/MergeAction.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/MergeAction.java	2006-10-24 11:39:11 UTC (rev 7075)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/MergeAction.java	2006-10-24 12:47:05 UTC (rev 7076)
@@ -0,0 +1,52 @@
+package org.drools.brms.client.decisiontable;
+
+import org.drools.brms.client.decisiontable.EditableDTGrid.RowClickListener;
+
+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.Widget;
+
+/**
+ * This shows the widget for merging cells in a row.
+ * @author Steven Williams
+ */
+public class MergeAction extends Composite {
+
+    private HorizontalPanel panel = new HorizontalPanel();
+    private Image merge;
+    private int row;
+    
+
+    
+    
+    /**
+     * Pass in the click listener delegate for when the respective action is clicked
+     * @param clickListener
+     * @param okClickListener
+     */
+    public MergeAction(final int currentRow, final RowClickListener clickListener) {
+        row = currentRow;
+        merge = new Image("images/refresh.gif");
+        merge.setTitle( "Merge cells in this row" );
+        merge.addClickListener( new ClickListener() {
+			public void onClick(final Widget w) {
+				clickListener.onClick(w, row);
+			}
+        });
+        
+        panel.add( merge);
+        
+        initWidget( panel );
+    }
+    
+    public void setRow(final int row) {
+    	this.row = row;
+    }
+    
+    public int getRow() {
+    	return row;
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/MergeDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/MergeDialog.java	2006-10-24 11:39:11 UTC (rev 7075)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/MergeDialog.java	2006-10-24 12:47:05 UTC (rev 7076)
@@ -0,0 +1,58 @@
+package org.drools.brms.client.decisiontable;
+
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.DialogBox;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.HasHorizontalAlignment;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+/**
+ * Dialog to handle merging cells
+ * @author Steven Williams
+ *
+ */
+class MergeDialog extends DialogBox {
+	MergeDialog(final EditableDTGrid dt, final int row) {
+		setText("Merge cells");
+		VerticalPanel form = new VerticalPanel();
+		form.setSpacing(4);
+		Grid grid = new Grid(2, 2);
+		grid.setCellSpacing(4);
+		grid.setWidget(0, 0, new Label("Start column"));
+		final TextBox startColumn = new TextBox();
+		grid.setWidget(0, 1, startColumn);
+		grid.setWidget(1, 0, new Label("End column"));
+		final TextBox endColumn = new TextBox();
+		grid.setWidget(1, 1, endColumn);
+		form.add(grid);
+		Button okay = new Button("OK");
+		okay.addClickListener(new ClickListener() {
+
+			public void onClick(Widget arg0) {
+				dt.merge(row, startColumn.getText(), endColumn.getText());
+				hide();
+			}
+			
+		});
+		Button cancel = new Button("Cancel");
+		cancel.addClickListener(new ClickListener() {
+			
+			public void onClick(Widget arg0) {
+				hide();
+			}
+			
+		});
+		form.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
+		HorizontalPanel buttons = new HorizontalPanel();
+		buttons.setSpacing(4);
+		buttons.add(okay);
+		buttons.add(cancel);
+		form.add(buttons);
+		setWidget(form);
+		
+	}
+}
\ No newline at end of file




More information about the jboss-svn-commits mailing list