[jboss-svn-commits] JBL Code SVN: r21134 - in labs/jbossrules/trunk/drools-guvnor: src/main/java/org/drools/guvnor and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jul 20 09:01:15 EDT 2008


Author: arhan
Date: 2008-07-20 09:01:15 -0400 (Sun, 20 Jul 2008)
New Revision: 21134

Added:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ImageSetWidget.java
Modified:
   labs/jbossrules/trunk/drools-guvnor/build.xml
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/Guvnor.gwt.xml
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/AssetFormats.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerLayoutManager.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/EditorLauncher.java
Log:
GSOC2008: ImageSetWidget, initial version. 
- supports one image per RuleAsset
- requires refactoring
- makes use of rolodex widget

Modified: labs/jbossrules/trunk/drools-guvnor/build.xml
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/build.xml	2008-07-20 10:48:17 UTC (rev 21133)
+++ labs/jbossrules/trunk/drools-guvnor/build.xml	2008-07-20 13:01:15 UTC (rev 21134)
@@ -18,7 +18,7 @@
 		<gwt:compile outDir="target/gwt-compiled-output"
 			gwtHome="${gwt.home}"
 			classBase="org.drools.guvnor.Guvnor"
-			sourceclasspath="src/main/java; ../drools-compiler/src/main/java; ../lib/gwtext.jar"
+			sourceclasspath="src/main/java; ../drools-compiler/src/main/java; ../lib/gwtext.jar;../lib/gwt-rolodex-gwt15-1.1.jar"
 		/>
 		<!-- get rid of old -->
 		<delete>
@@ -35,7 +35,7 @@
 	</target>
 
 	<target name="gwt-shell">
-		<gwt:shell sourceclasspath="src/main/java/; ../drools-compiler/src/main/java"
+		<gwt:shell sourceclasspath="src/main/java/; ../drools-compiler/src/main/java; ../lib/gwt-rolodex-gwt15-1.1.jar"
 			bindir="target/classes"
 			outDir="src/main/webapp"
 			gwtHome="${gwt.home}"

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/Guvnor.gwt.xml
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/Guvnor.gwt.xml	2008-07-20 10:48:17 UTC (rev 21133)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/Guvnor.gwt.xml	2008-07-20 13:01:15 UTC (rev 21134)
@@ -3,6 +3,7 @@
 	<!-- Inherit the core Web Toolkit stuff.                  -->
 	<inherits name='com.google.gwt.user.User'/>
     <inherits name="com.gwtext.GwtExt"/>
+    <inherits name='com.yesmail.gwt.rolodex.Rolodex'/>
 
     <!-- Specify the app entry point class.                   -->
 	<!-- <entry-point class='org.drools.guvnor.client.JBRMS'/> -->

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/AssetFormats.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/AssetFormats.java	2008-07-20 10:48:17 UTC (rev 21133)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/AssetFormats.java	2008-07-20 13:01:15 UTC (rev 21134)
@@ -16,7 +16,6 @@
  */
 
 
-
 /**
  * Keeps track of the different rule formats we support.
  * Each format type corresponds to the dublin core "format" attribute.
@@ -26,9 +25,7 @@
  *
  * If an asset type is unknown, then it will be opened with the default editor.
  *
- *
  * @author Michael Neale
- *
  */
 public class AssetFormats {
 
@@ -69,10 +66,13 @@
     /** For fact models in drl.     */
     public static final String DRL_MODEL = "model.drl";
 
+    /**  for a set of images */
+    public static final String IMAGE_SET = "image-set";
+
     /**
      * The following group the assets together for lists, helpers etc...
      */
-    public static final String[] BUSINESS_RULE_FORMATS = new String[] {AssetFormats.BUSINESS_RULE, AssetFormats.DSL_TEMPLATE_RULE, AssetFormats.DECISION_SPREADSHEET_XLS, AssetFormats.DECISION_TABLE_GUIDED};
+    public static final String[] BUSINESS_RULE_FORMATS = new String[]{AssetFormats.BUSINESS_RULE, AssetFormats.DSL_TEMPLATE_RULE, AssetFormats.DECISION_SPREADSHEET_XLS, AssetFormats.DECISION_TABLE_GUIDED, AssetFormats.IMAGE_SET};
 
 
     /**
@@ -95,6 +95,4 @@
     }
 
 
-
-
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerLayoutManager.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerLayoutManager.java	2008-07-20 10:48:17 UTC (rev 21133)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/ExplorerLayoutManager.java	2008-07-20 13:01:15 UTC (rev 21134)
@@ -410,6 +410,14 @@
 			}
 		}, "images/gdst.gif"));
 
+        //TODO: new icon
+        //TODO: refactor this methid to a class, make menus pluggable
+        m.addItem(new Item("New ImageSet", new BaseItemListenerAdapter() {
+        			public void onClick(BaseItem item, EventObject e) {
+        				launchWizard(AssetFormats.IMAGE_SET, "New ImageSet", true);
+        			}
+        	    }, "images/rule_asset.gif"));
+
         m.addItem(new Item("New Test Scenario", new BaseItemListenerAdapter() {
         			public void onClick(BaseItem item, EventObject e) {
         				launchWizard(AssetFormats.TEST_SCENARIO,

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/EditorLauncher.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/EditorLauncher.java	2008-07-20 10:48:17 UTC (rev 21133)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/EditorLauncher.java	2008-07-20 13:01:15 UTC (rev 21134)
@@ -52,9 +52,6 @@
 
     /**
      * This will return the appropriate viewer for the asset.
-     *
-     * TODO: the method to be changed in order to make the editors pluggable
-     * TODO: look at http://gwtreflection.sourceforge.net/
      */
     public static Widget getEditorViewer(RuleAsset asset,
                                          RuleViewer viewer) {
@@ -80,6 +77,8 @@
         	return new RuleValidatorWrapper(new GuidedDecisionTableWidget(asset), asset);
         } else if (asset.metaData.format.equals(AssetFormats.DRL_MODEL)) {
         	return new RuleValidatorWrapper(new FactModelWidget(asset), asset);
+        } else if (asset.metaData.format.equals(AssetFormats.IMAGE_SET)) {
+        	return new ImageSetWidget(asset, viewer);
         } else {
             return new DefaultContentUploadEditor( asset, viewer );
         }

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ImageSetWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ImageSetWidget.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ImageSetWidget.java	2008-07-20 13:01:15 UTC (rev 21134)
@@ -0,0 +1,173 @@
+package org.drools.guvnor.client.ruleeditor;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.guvnor.client.common.*;
+import org.drools.guvnor.client.rpc.RuleAsset;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.ui.*;
+import com.google.gwt.user.client.ui.impl.ClippedImagePrototype;
+import com.google.gwt.user.client.Window;
+import com.yesmail.gwt.rolodex.client.RolodexPanel;
+import com.yesmail.gwt.rolodex.client.RolodexCardBundle;
+import com.yesmail.gwt.rolodex.client.RolodexCard;
+
+/**
+ * ImageSetWidget - allows to use images as assets. Can upload images one by one and display them as a deck of cards (using rolodex).
+ *
+ * TODO: support in content handler to enable multiple images and carry out graphic routines
+ * TODO: refactor initWidgets (as it was copypasted from AssetAttachmentFileWidget
+ * TODO: The "Loading.." popup doesn't close
+ * TODO: functional features ?
+ *
+ */
+public class ImageSetWidget extends DirtyableComposite {
+
+    private FormPanel form;
+    private ImageButton ok;
+    private RuleViewer viewer;
+    private FormStyleLayout layout;
+    private RuleAsset asset;
+
+    public ImageSetWidget(RuleAsset asset, RuleViewer viewer) {
+        this.asset = asset;
+        this.viewer = viewer;
+        initWidgets(asset.uuid, asset.metaData.name);
+    }
+
+    private void initWidgets(final String uuid, String formName) {
+        form = new FormPanel();
+        form.setAction(GWT.getModuleBaseURL() + "asset");
+        form.setEncoding(FormPanel.ENCODING_MULTIPART);
+        form.setMethod(FormPanel.METHOD_POST);
+
+        FileUpload up = new FileUpload();
+        up.setName(HTMLFileManagerFields.UPLOAD_FIELD_NAME_ATTACH);
+        HorizontalPanel fields = new HorizontalPanel();
+        fields.add(getHiddenField(HTMLFileManagerFields.FORM_FIELD_UUID, uuid));
+
+        ok = new ImageButton("images/upload.gif", "Upload");
+
+        fields.add(up);
+        fields.add(new Label("upload:"));
+        fields.add(ok);
+
+        form.add(fields);
+
+        layout = new FormStyleLayout("images/upload.gif", formName);
+
+        createRolodexPanel();
+
+        if (!this.asset.isreadonly)
+            layout.addAttribute("Upload new version:", form);
+
+        Button dl = new Button("Download");
+        dl.addClickListener(new ClickListener() {
+            public void onClick(Widget w) {
+                Window.open(GWT.getModuleBaseURL() + "asset?" + HTMLFileManagerFields.FORM_FIELD_UUID + "=" + uuid,
+                        "downloading", "resizable=no,scrollbars=yes,status=no");
+            }
+        });
+        layout.addAttribute("Download current version:", dl);
+
+        ok.addClickListener(new ClickListener() {
+            public void onClick(Widget w) {
+                showUploadingBusy();
+                submitUpload();
+            }
+        });
+
+        initWidget(layout);
+        layout.setWidth("100%");
+        this.setStyleName(getOverallStyleName());
+    }
+
+    private void createRolodexPanel() {
+        RolodexCardBundle images = getImagesFromAsset();
+        RolodexCard[] rolodexCards = images.getRolodexCards();
+        if (rolodexCards.length > 0) {
+            final RolodexPanel rolodex = new RolodexPanel(images, 3, rolodexCards[0], true);
+            rolodex.setHeight("200px");
+            layout.addRow(rolodex);
+        }
+    }
+
+    protected void submitUpload() {
+        form.submit();
+    }
+
+    protected void showUploadingBusy() {
+        LoadingPopup.showMessage("Uploading...");
+    }
+
+    void initAssetHandlers() {
+        form.addFormHandler(new FormHandler() {
+            public void onSubmit(FormSubmitEvent ev) {
+            }
+
+            public void onSubmitComplete(FormSubmitCompleteEvent ev) {
+                LoadingPopup.close();
+                if (ev.getResults().indexOf("OK") > -1) {
+                    Window.alert("File was uploaded successfully.");
+                    viewer.refreshDataAndView();
+                } else {
+                    ErrorPopup.showMessage("Unable to upload the file.");
+                }
+            }
+        });
+    }
+
+    private TextBox getHiddenField(String name, String value) {
+        TextBox t = new TextBox();
+        t.setName(name);
+        t.setText(value);
+        t.setVisible(false);
+        return t;
+    }
+
+    //TODO: new icon
+    public String getIcon() {
+        return "images/decision_table.png";
+    }
+
+    //TODO: ?
+    public String getOverallStyleName() {
+        return "decision-Table-upload";
+    }
+
+    /**
+     * TODO: create a bundle of images using asset.content
+     */
+    public RolodexCardBundle getImagesFromAsset() {
+        return new RolodexCardBundle() {
+            public int getMaxHeight() {
+                return 80;
+            }
+
+            ClippedImagePrototype clip = new ClippedImagePrototype(
+                    GWT.getModuleBaseURL() + "asset?" + HTMLFileManagerFields.FORM_FIELD_UUID + "=" + asset.uuid,
+                    0, 0, 300, 200
+            );
+
+            RolodexCard card = new RolodexCard(clip, clip, clip, 300, 100, 10);
+
+            public RolodexCard[] getRolodexCards() {
+                return new RolodexCard[]{card};
+            }
+        };
+
+    }
+}




More information about the jboss-svn-commits mailing list