[jboss-svn-commits] JBL Code SVN: r11388 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client/common and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Apr 26 19:38:57 EDT 2007
Author: fmeyer
Date: 2007-04-26 19:38:56 -0400 (Thu, 26 Apr 2007)
New Revision: 11388
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtableComposite.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtableFlexTable.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/IDirtyable.java
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryEditor.java
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/packages/PackageExplorerWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/MetaData.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/AssetCategoryEditor.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/DefaultRuleContentWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleDocumentWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/FileManagerUtils.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/MetaDataMapperTest.java
Log:
JBRULES-705 Editor widgets to honour "read only" flag
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryEditor.java 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryEditor.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -35,7 +35,6 @@
table.setWidget( 0, 1, new Label(getTitle( path )));
-
table.setWidget( 1, 0, new Label("Cateogory name") );
table.setWidget( 1, 1, name );
@@ -104,5 +103,4 @@
void cancel() {
hide();
}
-
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtableComposite.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtableComposite.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtableComposite.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -0,0 +1,26 @@
+package org.drools.brms.client.common;
+
+import com.google.gwt.user.client.ui.Composite;
+
+public abstract class DirtableComposite extends Composite implements IDirtyable {
+ private boolean dirtyflag = false;
+
+ /* (non-Javadoc)
+ * @see org.drools.brms.client.common.isDirtable#isDirty()
+ */
+ public boolean isDirty() {
+ return this.dirtyflag;
+ }
+ /* (non-Javadoc)
+ * @see org.drools.brms.client.common.isDirtable#resetDirty()
+ */
+ public void resetDirty(){
+ this.dirtyflag = false;
+ }
+ /* (non-Javadoc)
+ * @see org.drools.brms.client.common.isDirtable#makeDirty()
+ */
+ public void makeDirty(){
+ this.dirtyflag = true;
+ }
+}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtableFlexTable.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtableFlexTable.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtableFlexTable.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -0,0 +1,54 @@
+package org.drools.brms.client.common;
+
+import java.util.ArrayList;
+
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.Widget;
+
+public class DirtableFlexTable extends FlexTable {
+
+ private int length;
+ private ArrayList list = new ArrayList();
+
+ public boolean hasDirty() {
+
+ //Pair coordinates;
+ DirtableComposite element;
+
+ for ( Object coordinates : list ) {
+ element = (DirtableComposite) getWidget( ( (Pair) coordinates).getRow(), ( (Pair) coordinates).getColumn() );
+ if ( element.isDirty() ) return true;
+ }
+ return false;
+ }
+
+ public void setWidget(int row, int column , Widget arg2) {
+ super.setWidget( row, column, arg2 );
+
+ if ( arg2 instanceof DirtableComposite ) {
+ list.add( length++, new Pair(row ,column) );
+
+ }
+ }
+}
+
+class Pair {
+ private int row;
+ private int column;
+
+ public Pair(int row, int column) {
+ this.row = row;
+ this.column = column;
+ }
+
+ public int getColumn() {
+ return column;
+ }
+
+ public int getRow() {
+ return row;
+ }
+
+
+
+}
\ No newline at end of file
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 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -1,6 +1,5 @@
package org.drools.brms.client.common;
-import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
@@ -16,7 +15,7 @@
*
* @author Michael Neale
*/
-public class FormStyleLayout extends Composite {
+public class FormStyleLayout extends DirtableComposite {
private FlexTable layout = new FlexTable();
private FlexCellFormatter formatter = layout.getFlexCellFormatter();
@@ -30,7 +29,6 @@
initWidget( layout );
}
-
/** This has no header */
public FormStyleLayout() {
initWidget( layout );
@@ -83,7 +81,12 @@
name.setStyleName( "resource-name-Label" );
layout.setWidget( 0, 1, name );
+
numInLayout++;
- }
+ }
+
+ public void setFlexTableWidget(int row, int col, Widget widget){
+ layout.setWidget( row, col, widget );
+ }
}
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 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -22,29 +22,25 @@
form = new FormStyleLayout( image, title );
this.setStyleName( "ks-popups-Popup" );
-
- add( form );
- }
-
- public void addAttribute(String label, Widget wid) {
- form.addAttribute( label, wid );
- }
-
- public void addRow(Widget wid) {
- form.addRow( wid );
- }
-
- public void show() {
Image close = new ImageButton("images/close.gif");
close.addClickListener( new ClickListener() {
public void onClick(Widget w) {
hide();
}
});
- addAttribute("", close);
+
+ form.setFlexTableWidget( 0, 2, close );
+
+ add( form );
+
- super.show();
}
-
+ public void addAttribute(String label, Widget wid) {
+ form.addAttribute( label, wid );
+ }
+
+ public void addRow(Widget wid) {
+ form.addRow( wid );
+ }
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/IDirtyable.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/IDirtyable.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/IDirtyable.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -0,0 +1,11 @@
+package org.drools.brms.client.common;
+
+public interface IDirtyable {
+
+ public abstract boolean isDirty();
+
+ public abstract void resetDirty();
+
+ public abstract void makeDirty();
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -81,9 +81,7 @@
};
exTree.addTreeListener( treeListener );
-
VerticalPanel left = new VerticalPanel();
- left.add( exTree );
if (!readonly) {
//only care about new buttons if its not read only
@@ -95,33 +93,27 @@
left.add( buttons );
buttons.setWidth( "100%" );
}
+ left.add( exTree );
+
layout.setWidget( 0, 0, left );
FlexCellFormatter formatter = layout.getFlexCellFormatter();
formatter.setVerticalAlignment( 0, 0, HasVerticalAlignment.ALIGN_TOP );
layout.getFlexCellFormatter().setRowSpan( 0, 1, 2 );
layout.getFlexCellFormatter().setAlignment( 0, 1, HasHorizontalAlignment.ALIGN_CENTER, HasVerticalAlignment.ALIGN_TOP );
-
-
refreshTreeView( );
TreeItem item = exTree.getItem( 0 );
if (item != null) exTree.setSelectedItem( item );
layout.setWidget( 0, 1, new HTML("<i>Please choose a package to edit, explore, or create a new package.</i>") );
-
layout.getFlexCellFormatter().setWidth( 0, 0, "25%" );
-
layout.getFlexCellFormatter().setAlignment( 0, 1, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP );
-
listView = new AssetItemListViewer(this.editEvent);
-
initWidget( layout );
}
-
-
/** Return all the new wizard buttons. */
private HorizontalPanel getNewWizardButtons() {
HorizontalPanel newWizards = new HorizontalPanel();
@@ -220,16 +212,8 @@
}
-
-
-
-
-
-
public void refreshTreeView() {
-
-
if (this.uuid == null) {
LoadingPopup.showMessage( "Loading list of packages ..." );
RepositoryServiceFactory.getService().listPackages( new GenericCallback() {
@@ -333,13 +317,6 @@
}
}
-
-
-
-
-
-
-
/**
* This will create a "show list" event to be attached to the tree.
*/
@@ -350,7 +327,6 @@
final TableDataResult table = (TableDataResult) data;
listView.loadTableData( table );
listView.setWidth( "100%" );
- //listView.setHeight( "100%" );
layout.setWidget( 0, 1, listView );
layout.getFlexCellFormatter().setAlignment( 0, 1, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP );
LoadingPopup.close();
@@ -378,8 +354,6 @@
public void onSuccess(Object data) {
PackageConfigData conf = (PackageConfigData) data;
PackageEditor ed = new PackageEditor(conf);
-// ed.setWidth( "100%" );
-// ed.setHeight( "100%" );
layout.setWidget( 0, 1, ed );
}
});
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/MetaData.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/MetaData.java 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/MetaData.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -8,9 +8,7 @@
* This is the DTO for a versionable asset's meta data.
* ie basically everything except the payload.
*/
-public class MetaData
- implements
- IsSerializable {
+public class MetaData implements IsSerializable {
public String name = "";
public String description = "";
@@ -42,8 +40,6 @@
public Date dateEffective;
public Date dateExpired;
- /** used to flag dirty - ie needs to be spanked. Or saved to the repo, whatever */
- public boolean dirty = false;
/**
* Remove a category.
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -43,8 +43,6 @@
private String uuid;
private HTML state;
-
-
public ActionToolbar(final RuleAsset asset,
final Command checkin,
@@ -157,8 +155,7 @@
} );
saveControls.add( delete );
}
-
-
+
HorizontalPanel windowControls = new HorizontalPanel();
Image maxMinImage = new ImageButton("images/max_min.gif");
@@ -174,12 +171,7 @@
closeImg.setTitle( "Close." );
closeImg.addClickListener( new ClickListener() {
public void onClick(Widget w) {
- if (metaData.dirty) {
- doCloseUnsavedWarning( );
- } else {
- //we can actually close
- closeCommand.execute( );
- }
+ closeCommand.execute( );
}
});
@@ -237,9 +229,7 @@
});
pop.show();
}
-
-
/**
* Show the stats change popup.
*/
@@ -255,34 +245,10 @@
}
/**
- * Called when user wants to close, but there is "dirtyness".
- */
- protected void doCloseUnsavedWarning() {
- final FormStylePopup pop = new FormStylePopup("images/warning-large.png", "WARNING: Un-committed changes.");
- Button dis = new Button("Discard");
- pop.addAttribute( "Are you sure you want to discard changes?", dis );
-
- dis.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- closeCommand.execute();
- pop.hide();
- }
- });
-
- pop.setStyleName( "warning-Popup" );
-
- pop.setPopupPosition( 200, getAbsoluteTop() );
- pop.show();
-
- }
-
- /**
* This needs to be set to allow the current viewer to be closed.
*/
public void setCloseCommand(Command c) {
this.closeCommand = c;
}
-
-
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/AssetCategoryEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/AssetCategoryEditor.java 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/AssetCategoryEditor.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -2,12 +2,12 @@
import org.drools.brms.client.categorynav.CategoryExplorerWidget;
import org.drools.brms.client.categorynav.CategorySelectHandler;
+import org.drools.brms.client.common.DirtableComposite;
import org.drools.brms.client.common.ImageButton;
import org.drools.brms.client.rpc.MetaData;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Image;
@@ -24,7 +24,7 @@
*
* @author Michael Neale
*/
-public class AssetCategoryEditor extends Composite {
+public class AssetCategoryEditor extends DirtableComposite {
private MetaData data;
private Grid layout = new Grid(1, 2);
@@ -54,10 +54,6 @@
-
-
-
-
initWidget( layout );
}
@@ -79,11 +75,8 @@
}
protected void removeCategory(int idx) {
-
data.removeCategory( idx );
-
- data.dirty = true;
-
+ makeDirty();
resetBox();
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/DefaultRuleContentWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/DefaultRuleContentWidget.java 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/DefaultRuleContentWidget.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -1,11 +1,11 @@
package org.drools.brms.client.ruleeditor;
+import org.drools.brms.client.common.DirtableComposite;
import org.drools.brms.client.rpc.MetaData;
import org.drools.brms.client.rpc.RuleAsset;
import org.drools.brms.client.rpc.RuleContentText;
import com.google.gwt.user.client.ui.ChangeListener;
-import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.Widget;
@@ -14,7 +14,7 @@
* This is the default rule editor widget (just text editor based) - more to come later.
* @author michael neale
*/
-public class DefaultRuleContentWidget extends Composite {
+public class DefaultRuleContentWidget extends DirtableComposite {
private TextArea text;
final private RuleContentText data;
@@ -35,7 +35,7 @@
text.addChangeListener( new ChangeListener() {
public void onChange(Widget w) {
data.content = text.getText();
- meta.dirty = true;
+ makeDirty();
}
});
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -137,8 +137,6 @@
horiz.add( editPackage );
return horiz;
}
-
-
}
@@ -156,27 +154,26 @@
Window.alert( "You need to pick a different package to move this to." );
return;
}
- RepositoryServiceFactory.getService().changeAssetPackage( uuid, sel.getSelectedPackage(),
- "Moved from : " + pkg,
+ RepositoryServiceFactory.getService().changeAssetPackage( uuid,
+ sel.getSelectedPackage(),
+ "Moved from : " + pkg,
new GenericCallback() {
+ public void onSuccess(Object data) {
+ refreshView.execute();
+ pop.hide();
+ }
-
- public void onSuccess(Object data) {
- refreshView.execute();
- pop.hide();
- }
-
- });
+ } );
}
});
- pop.setPopupPosition( source.getParent().getParent().getAbsoluteLeft(), source.getParent().getParent().getAbsoluteTop() );
+ pop.setPopupPosition( source.getParent().getParent().getAbsoluteLeft(),
+ source.getParent().getParent().getAbsoluteTop() );
pop.show();
}
-
private Widget getVersionNumberLabel() {
if (data.versionNumber == 0 ) {
return new HTML("<i>Not checked in yet</i>");
@@ -186,8 +183,6 @@
}
-
-
private Widget readOnlyDate(Date lastModifiedDate) {
if (lastModifiedDate == null) {
return null;
@@ -196,18 +191,12 @@
}
}
-
-
private Label readOnlyText(String text) {
Label lbl = new Label(text);
lbl.setWidth( "100%" );
return lbl;
}
-
-
-
-
private Widget categories() {
AssetCategoryEditor ed = new AssetCategoryEditor(this.data, this.readOnly);
return ed;
@@ -221,8 +210,8 @@
box.setTitle( toolTip );
box.setText( bind.getValue() );
ChangeListener listener = new ChangeListener() {
- public void onChange(Widget w) {
- data.dirty = true;
+ public void onChange(Widget w) {
+ makeDirty();
bind.setValue( box.getText() );
}
};
@@ -233,16 +222,11 @@
}
}
-
-
/** used to bind fields in the meta data DTO to the form */
static interface FieldBinding {
void setValue(String val);
String getValue();
}
-
-
-
/**
* Return the data if it is to be saved.
@@ -250,7 +234,5 @@
public MetaData getData() {
return data;
}
-
-
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleDocumentWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleDocumentWidget.java 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleDocumentWidget.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -1,5 +1,6 @@
package org.drools.brms.client.ruleeditor;
+import org.drools.brms.client.common.DirtableComposite;
import org.drools.brms.client.rpc.MetaData;
import com.google.gwt.user.client.ui.ChangeListener;
@@ -16,7 +17,7 @@
* @author Michael Neale
*
*/
-public class RuleDocumentWidget extends Composite {
+public class RuleDocumentWidget extends DirtableComposite {
private TextArea text;
@@ -50,7 +51,7 @@
text.addChangeListener( new ChangeListener() {
public void onChange(Widget w) {
data.description = text.getText();
- data.dirty = true;
+ makeDirty();
}
});
if (data.description == null || "".equals(data.description )) {
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -1,16 +1,19 @@
package org.drools.brms.client.ruleeditor;
+import org.drools.brms.client.common.DirtableComposite;
+import org.drools.brms.client.common.DirtableFlexTable;
import org.drools.brms.client.common.ErrorPopup;
-import org.drools.brms.client.common.InfoPopup;
+import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.common.LoadingPopup;
-import org.drools.brms.client.rpc.MetaData;
import org.drools.brms.client.rpc.RepositoryServiceFactory;
import org.drools.brms.client.rpc.RuleAsset;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.Widget;
@@ -24,20 +27,18 @@
public class RuleViewer extends Composite {
private Command closeCommand;
-
protected RuleAsset asset;
-
- private final FlexTable layout;
+ private final DirtableFlexTable layout;
+
private boolean readOnly;
private MetaDataWidget metaWidget;
-
+ private RuleDocumentWidget doco;
+ private Widget editor;
+
private ActionToolbar toolbar;
+
- private Widget editor;
-
- private RuleDocumentWidget doco;
-
public RuleViewer(RuleAsset asset) {
this(asset, false);
}
@@ -51,10 +52,9 @@
public RuleViewer(RuleAsset asset, boolean historicalReadOnly) {
this.asset = asset;
this.readOnly = historicalReadOnly;
- layout = new FlexTable();
+ layout = new DirtableFlexTable();
doWidgets();
-
initWidget( this.layout );
LoadingPopup.close();
@@ -68,12 +68,10 @@
private void doWidgets() {
this.layout.clear();
- metaWidget = new MetaDataWidget( this.asset.metaData,
- readOnly, this.asset.uuid, new Command() {
-
- public void execute() {
- refreshDataAndView();
- }
+ metaWidget = new MetaDataWidget( this.asset.metaData, readOnly, this.asset.uuid, new Command() {
+ public void execute() {
+ refreshDataAndView();
+ }
});
@@ -84,66 +82,61 @@
//now the main layout table
FlexCellFormatter formatter = layout.getFlexCellFormatter();
- layout.setWidget( 0,
- 1,
- metaWidget );
- formatter.setRowSpan( 0,
- 1,
- 3 );
+ layout.setWidget( 0, 1, metaWidget );
+
+ formatter.setRowSpan( 0, 1, 3 );
formatter.setVerticalAlignment( 0, 1, HasVerticalAlignment.ALIGN_TOP );
- formatter.setWidth( 0,
- 1,
- "30%" );
+ formatter.setWidth( 0, 1, "30%" );
//and now the action widgets (checkin/close etc).
toolbar = new ActionToolbar( asset,
- new Command() {
- public void execute() {
- doCheckin();
- }
- },
- new Command() {
- public void execute() {
- doArchive();
- }
- },
- new Command() {
- public void execute() {
- zoomIntoAsset();
- }
- },
- new Command() {
- public void execute() {
- doDelete();
- }
- },
- readOnly);
+ new Command() {
+ public void execute() {
+ doCheckin();
+ }
+ },
+ new Command() {
+ public void execute() {
+ doArchive();
+ }
+ },
+ new Command() {
+ public void execute() {
+ zoomIntoAsset();
+ }
+ },
+ new Command() {
+ public void execute() {
+ doDelete();
+ }
+ },
+ readOnly);
+
+
+ layout.setWidget( 0, 0, toolbar );
+ formatter.setAlignment( 0, 0, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_MIDDLE );
+
+ //REMEMBER: subsequent rows have only one column, doh that is confusing !
+ //GAAAAAAAAAAAAAAAAAAAAAAAAAAH
+
+ editor = EditorLauncher.getEditorViewer(asset, this);
toolbar.setCloseCommand( new Command() {
public void execute() {
+ if (layout.hasDirty()) {
+ doCloseUnsavedWarning( );
+ } else {
+
closeCommand.execute();
+ }
}
} );
- layout.setWidget( 0,
- 0,
- toolbar );
- formatter.setAlignment( 0,
- 0,
- HasHorizontalAlignment.ALIGN_RIGHT,
- HasVerticalAlignment.ALIGN_MIDDLE );
-
- //REMEMBER: subsequent rows have only one column, doh that is confusing !
- //GAAAAAAAAAAAAAAAAAAAAAAAAAAH
-
- editor = EditorLauncher.getEditorViewer(asset, this);
layout.setWidget( 1, 0, editor);
//the document widget
doco = new RuleDocumentWidget(asset.metaData);
- layout.setWidget( 2,
- 0,
- doco );
+ layout.setWidget( 2, 0, doco );
}
void doDelete() {
@@ -181,6 +174,11 @@
public void onSuccess(Object o) {
String uuid = (String)o;
+
+ ((DirtableComposite) editor).resetDirty();
+ metaWidget.resetDirty();
+ doco.resetDirty();
+
if (uuid == null) {
ErrorPopup.showMessage( "Failed to check in the item. Please contact your system administrator." );
return;
@@ -213,7 +211,6 @@
* in the rule asset).
*/
public void zoomIntoAsset() {
-
boolean vis = !layout.getFlexCellFormatter().isVisible( 2, 0 );
this.layout.getFlexCellFormatter().setVisible( 0, 1, vis );
@@ -229,4 +226,27 @@
this.closeCommand = c;
}
+ /**
+ * Called when user wants to close, but there is "dirtyness".
+ */
+ protected void doCloseUnsavedWarning() {
+ final FormStylePopup pop = new FormStylePopup("images/warning-large.png", "WARNING: Un-committed changes.");
+ Button dis = new Button("Discard");
+ pop.addRow( new HTML("Are you sure you want to discard changes?") );
+ pop.addRow( dis );
+
+ dis.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ closeCommand.execute();
+ pop.hide();
+ }
+ });
+
+ pop.setStyleName( "warning-Popup" );
+
+ pop.setPopupPosition( 200, getAbsoluteTop() );
+ pop.show();
+
+ }
+
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/FileManagerUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/FileManagerUtils.java 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/FileManagerUtils.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -14,7 +14,6 @@
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.drools.brms.client.common.HTMLFileManagerFields;
-import org.drools.brms.client.packages.ModelAttachmentFileWidget;
import org.drools.repository.AssetItem;
import org.drools.repository.RulesRepository;
import org.drools.repository.RulesRepositoryException;
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/MetaDataMapperTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/MetaDataMapperTest.java 2007-04-26 23:29:34 UTC (rev 11387)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/MetaDataMapperTest.java 2007-04-26 23:38:56 UTC (rev 11388)
@@ -26,8 +26,6 @@
assertEquals("abc", bean.getPublisher());
assertEquals("def", bean.getCreator());
- assertFalse(data.dirty);
-
}
More information about the jboss-svn-commits
mailing list