[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