[jboss-svn-commits] JBL Code SVN: r18215 - in labs/jbossrules/trunk: drools-compiler and 31 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jan 31 02:57:21 EST 2008
Author: michael.neale at jboss.com
Date: 2008-01-31 02:57:21 -0500 (Thu, 31 Jan 2008)
New Revision: 18215
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup2.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/PrettyFormLayout.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/BRMSContentManager.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerLayoutManager.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerNodeConfig.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerViewCenterPanel.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor2.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageHeaderWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemGrid.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemGridDataLoader.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/find.gif
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/site-nav.xml
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/packages/PackageHeaderWidgetTest.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetPageList.java
labs/jbossrules/trunk/m2_repo/com/gwtext/gwtext/0.9.3/
labs/jbossrules/trunk/m2_repo/com/gwtext/gwtext/0.9.3/gwtext-0.9.3.jar
labs/jbossrules/trunk/m2_repo/com/gwtext/gwtext/0.9.3/gwtext-0.9.3.pom
Removed:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSFeatureConfigurator.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSFeatureList.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/RulesFeature.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetBrowser.java
Modified:
labs/jbossrules/trunk/drools-compiler/.project
labs/jbossrules/trunk/drools-jbrms/.classpath
labs/jbossrules/trunk/drools-jbrms/.project
labs/jbossrules/trunk/drools-jbrms/JBRMS.mac.launch
labs/jbossrules/trunk/drools-jbrms/pom.xml
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/JBRMS.gwt.xml
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/AdminFeature.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSEntryPoint.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/LoggedInUserInfo.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/LoginWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/ArchivedAssetManager.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryExplorerWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableComposite.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup.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/common/GenericCallback.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/InfoPopup.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/LoadingPopup.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/RulePackageSelector.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionInsertFactWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionValueEditor.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java
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/packages/NewPackageWizard.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageBuilderWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.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/packages/PackageManagerView.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageSnapshotView.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/qa/QAManagerWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/qa/ScenarioWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.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/CheckinPopup.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.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/NewAssetWizard.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/RuleValidatorWrapper.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/client/rulelist/AssetItemListViewer.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/QuickFindWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.html
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ModelContentHandler.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/security/SecurityServiceImpl.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java
labs/jbossrules/trunk/drools-jbrms/src/main/resources/rulelist.properties
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/AsyncInterfaceTest.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/TableDisplayHandlerTest.java
labs/jbossrules/trunk/drools-jsr94/.project
labs/jbossrules/trunk/drools-repository/pom.xml
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ArchiveItemTest.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java
labs/jbossrules/trunk/pom.xml
Log:
JBRULES-1445 BRMS v2 and new features
Modified: labs/jbossrules/trunk/drools-compiler/.project
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.project 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-compiler/.project 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,9 +1,7 @@
<projectDescription>
<name>drools-compiler</name>
<comment>A rule production system</comment>
- <projects>
- <project>drools-core</project>
- </projects>
+ <projects/>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
Modified: labs/jbossrules/trunk/drools-jbrms/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/.classpath 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/.classpath 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,61 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
- <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
- <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
- <classpathentry kind="output" path="target/classes"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="src" path="/drools-core"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-text-extractors/1.3/jackrabbit-text-extractors-1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/tmatesoft/svnkit/1.1.2/svnkit-1.1.2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-jcr-commons/1.3/jackrabbit-jcr-commons-1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/emma/emma/2.0.5312/emma-2.0.5312.jar"/>
- <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.1.1/commons-fileupload-1.1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/el/el-ri/1.2/el-ri-1.2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-api/1.3/jackrabbit-api-1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.2.1.6/derby-10.2.1.6.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar"/>
- <classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.3/jackrabbit-core-1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.3.0/slf4j-log4j12-1.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.0.0/lucene-core-2.0.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.3.1.ga/hibernate-entitymanager-3.3.1.ga.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-el/2.0.0.CR1/jboss-el-2.0.0.CR1.jar"/>
- <classpathentry kind="src" path="/drools-analytics"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-seam/2.0.0.CR2/jboss-seam-2.0.0.CR2.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/1.4.60/gwt-servlet-1.4.60.jar"/>
- <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.17/mvel-1.2.17.jar"/>
- <classpathentry kind="src" path="/drools-repository"/>
- <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate/3.2.4.sp1/hibernate-3.2.4.sp1.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.1/commons-io-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
- <classpathentry kind="src" path="/drools-decisiontables"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.0.0.ga/hibernate-commons-annotations-3.0.0.ga.jar"/>
- <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/jboss/javassist/3.3.ga/javassist-3.3.ga.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/el/el-api/1.2/el-api-1.2.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.3.0.ga/hibernate-annotations-3.3.0.ga.jar"/>
- <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6/dom4j-1.6.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.3.0/slf4j-api-1.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
- <classpathentry kind="src" path="/drools-compiler"/>
- <classpathentry kind="var" path="M2_REPO/ch/ethz/ganymed/ganymed-ssh2/build210/ganymed-ssh2-build210.jar"/>
- <classpathentry kind="var" path="M2_REPO/jboss/jboss-common-core/2.0.4.GA/jboss-common-core-2.0.4.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0.jar"/>
-</classpath>
\ No newline at end of file
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+ <classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/org/tmatesoft/svnkit/1.1.2/svnkit-1.1.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6/dom4j-1.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.0.0.ga/hibernate-commons-annotations-3.0.0.ga.jar"/>
+ <classpathentry kind="var" path="M2_REPO/emma/emma/2.0.5312/emma-2.0.5312.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/el/el-api/1.2/el-api-1.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.1.1/commons-fileupload-1.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.3.1.ga/hibernate-entitymanager-3.3.1.ga.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.3.0/slf4j-api-1.3.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.17/mvel-1.2.17.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.2.1.6/derby-10.2.1.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.3.0.ga/hibernate-annotations-3.3.0.ga.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.1/commons-io-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.3.0/slf4j-log4j12-1.3.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.0.0/lucene-core-2.0.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtext/gwtext/0.9.3/gwtext-0.9.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/1.4.60/gwt-servlet-1.4.60.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-jcr-commons/1.3/jackrabbit-jcr-commons-1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.3/jackrabbit-core-1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/javassist/3.3.ga/javassist-3.3.ga.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-text-extractors/1.3/jackrabbit-text-extractors-1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-common-core/2.0.4.GA/jboss-common-core-2.0.4.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-seam/2.0.0.CR2/jboss-seam-2.0.0.CR2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/el/el-ri/1.2/el-ri-1.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/ch/ethz/ganymed/ganymed-ssh2/build210/ganymed-ssh2-build210.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-api/1.3/jackrabbit-api-1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate/3.2.4.sp1/hibernate-3.2.4.sp1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-el/2.0.0.CR1/jboss-el-2.0.0.CR1.jar"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-analytics"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-decisiontables"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-repository"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Modified: labs/jbossrules/trunk/drools-jbrms/.project
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/.project 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/.project 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,7 @@
<projectDescription>
<name>drools-jbrms</name>
<comment>A rule production system</comment>
- <projects>
- <project>drools-core</project>
- <project>drools-analytics</project>
- <project>drools-repository</project>
- <project>drools-decisiontables</project>
- <project>drools-compiler</project>
- </projects>
+ <projects/>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
Modified: labs/jbossrules/trunk/drools-jbrms/JBRMS.mac.launch
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/JBRMS.mac.launch 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/JBRMS.mac.launch 2008-01-31 07:57:21 UTC (rev 18215)
@@ -59,7 +59,9 @@
<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry containerPath="GWT_DEV" path="3" type="3"/> "/>
<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry containerPath="GWT_HOME/gwt-servlet.jar" path="3" type="3"/> "/>
<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry containerPath="GWT_HOME/gwt-user.jar" path="3" type="3"/> "/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry internalArchive="/drools-jbrms/target/drools-jbrms/WEB-INF/lib/mvel-1.2.17.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry path="3" projectName="drools-analytics" type="1"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry internalArchive="/drools-jbrms/target/drools-jbrms/WEB-INF/lib/gwtext-0.9.3.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry internalArchive="/drools-jbrms/target/drools-jbrms/WEB-INF/lib/mvel-1.2.21.jar" path="3" type="2"/> "/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.5"/>
Modified: labs/jbossrules/trunk/drools-jbrms/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/pom.xml 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/pom.xml 2008-01-31 07:57:21 UTC (rev 18215)
@@ -26,28 +26,7 @@
<name>Drools :: Business Rule Management System</name>
<build>
- <finalName>drools-jbrms</finalName>
- <!-- Need Java 5 source enabled -->
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <configuration>
- <filesets>
- <fileset>
- <directory>./</directory>
- <includes>
- <include>.gwt-cache</include>
- <include>repository.xml</include>
- <include>repository</include>
- </includes>
- <followSymlinks>false</followSymlinks>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
+ <finalName>drools-jbrms</finalName>
</build>
@@ -115,6 +94,10 @@
<artifactId>gwt-servlet</artifactId>
</dependency>
<dependency>
+ <groupId>com.gwtext</groupId>
+ <artifactId>gwtext</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</dependency>
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/JBRMS.gwt.xml
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/JBRMS.gwt.xml 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/JBRMS.gwt.xml 2008-01-31 07:57:21 UTC (rev 18215)
@@ -2,11 +2,16 @@
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User'/>
+ <inherits name="com.gwtext.GwtExt"/>
- <!-- Specify the app entry point class. -->
+ <!-- Specify the app entry point class. -->
<!-- <entry-point class='org.drools.brms.client.JBRMS'/> -->
<entry-point class='org.drools.brms.client.JBRMSEntryPoint'/>
-
+
+ <script src="js/ext/adapter/yui/yui-utilities.js"></script>
+ <script src="js/ext/adapter/yui/ext-yui-adapter.js"></script>
+ <script src="js/ext/ext-all.js"></script>
+
<servlet path="/jbrmsService" class="org.jboss.seam.remoting.gwt.GWTRemoteServiceServlet" />
<servlet path="/asset" class="org.drools.brms.server.files.AssetFileServlet"/>
<servlet path="/backup" class="org.drools.brms.server.files.RepositoryBackupServlet"/>
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/AdminFeature.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/AdminFeature.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/AdminFeature.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,4 +1,5 @@
package org.drools.brms.client;
+
/*
* Copyright 2005 JBoss Inc
*
@@ -15,49 +16,73 @@
* limitations under the License.
*/
-
-
import org.drools.brms.client.admin.ArchivedAssetManager;
import org.drools.brms.client.admin.BackupManager;
import org.drools.brms.client.admin.CategoryManager;
import org.drools.brms.client.admin.StateManager;
-import com.google.gwt.user.client.ui.TabPanel;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.gwtext.client.widgets.TabPanel;
+import com.gwtext.client.widgets.TabPanelItem;
+//import com.google.gwt.user.client.ui.TabPanel;
+
/**
* This feature contains the administrative functions of the BRMS.
*/
public class AdminFeature extends JBRMSFeature {
- private TabPanel tab;
+ // private TabPanel tab;
- public AdminFeature() {
- tab = new TabPanel();
- tab.setWidth( "100%" );
- tab.setHeight( "100%" );
+ public AdminFeature() {
+ final TabPanel tp = new TabPanel( "tab-1" );
+ tp.setWidth( "100%" );
+ tp.setHeight( "100%" );
- tab.add( new CategoryManager(), "<img src='images/category_small.gif'/>Manage categories", true );
- tab.add( new StateManager(), "<img src='images/status_small.gif'/>Manage states", true );
- tab.add( new ArchivedAssetManager(), "<img src='images/backup_small.gif'/>Manage Archived Assets", true );
- tab.add( new BackupManager(), "<img src='images/backup_small.gif'/>Import Export", true );
+ TabPanelItem tpCategory = tp.addTab( "tpi1", "<img src='images/category_small.gif'/>Manage categories", false );
+ TabPanelItem tpStateManager = tp.addTab( "tpi2", "<img src='images/status_small.gif'/>Manage states", false );
+ TabPanelItem tpArchivedAssetManager = tp.addTab( "tpi3", "<img src='images/backup_small.gif'/>Manage Archived Assets", false );
+ TabPanelItem tpBackupManager = tp.addTab( "tpi4", "<img src='images/backup_small.gif'/>Import Export", false );
- tab.selectTab( 0 );
+ VerticalPanel vp1 = new VerticalPanel();
+ VerticalPanel vp2 = new VerticalPanel();
+ VerticalPanel vp3 = new VerticalPanel();
+ VerticalPanel vp4 = new VerticalPanel();
- initWidget( tab );
+ vp1.add( new CategoryManager() );
+ vp1.setSpacing( 15 );
+ vp2.add( new StateManager() );
+ vp2.setSpacing( 15 );
+ vp3.add( new ArchivedAssetManager() );
+ vp3.setSpacing( 15 );
+ vp4.add( new BackupManager() );
+ vp4.setSpacing( 15 );
+
+ tpCategory.setContent( vp1 );
+ tpStateManager.setContent( vp2 );
+ tpArchivedAssetManager.setContent( vp3 );
+ tpBackupManager.setContent( vp4 );
+
+ tp.activate( 0 );
- }
+ initWidget( tp );
+
- public static ComponentInfo init() {
- return new ComponentInfo("Admin",
- "Administer the repository") {
- public JBRMSFeature createInstance() {
- return new AdminFeature();
- }
- };
- }
+ // initWidget( tab );
+ }
- public void onShow() {
- }
+ public static ComponentInfo init() {
+ return new ComponentInfo( "Admin",
+ "Administer the repository" ) {
+ public JBRMSFeature createInstance() {
+ return new AdminFeature();
+ }
+
+ };
+ }
+
+ public void onShow() {
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSEntryPoint.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSEntryPoint.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSEntryPoint.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,4 +1,3 @@
-
/*
* Copyright 2005 JBoss Inc
*
@@ -15,26 +14,22 @@
* limitations under the License.
*/
-
package org.drools.brms.client;
-import org.drools.brms.client.JBRMSFeature.ComponentInfo;
import org.drools.brms.client.common.GenericCallback;
+import org.drools.brms.client.explorer.ExplorerLayoutManager;
import org.drools.brms.client.rpc.RepositoryServiceFactory;
import org.drools.brms.client.rpc.UserSecurityContext;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.HistoryListener;
import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.DialogBox;
-import com.google.gwt.user.client.ui.DockPanel;
-import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.HasAlignment;
-import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.RootPanel;
-import com.google.gwt.user.client.ui.VerticalPanel;
+import com.gwtext.client.widgets.QuickTips;
+import com.gwtext.client.widgets.form.Field;
+import com.gwtext.client.widgets.layout.BorderLayout;
/**
* This is the main launching/entry point for the JBRMS web console.
@@ -43,159 +38,53 @@
* If you hadn't noticed, this is using GWT from google. Refer to GWT docs
* if GWT is new to you (it is quite a different way of building web apps).
*/
-public class JBRMSEntryPoint implements EntryPoint, HistoryListener {
+public class JBRMSEntryPoint
+ implements
+ EntryPoint {
- private ComponentInfo curInfo;
- private JBRMSFeature curSink;
- private HTML description = new HTML();
- private JBRMSFeatureList list = new JBRMSFeatureList();
- private DockPanel panel = new DockPanel();
- private DockPanel sinkContainer;
- private LoginWidget loginWidget;
- private LoggedInUserInfo loggedInUserInfo;
+ private LoggedInUserInfo loggedInUserInfo;
- public void onHistoryChanged(String token) {
- // Find the SinkInfo associated with the history context. If one is
- // found, show it (It may not be found, for example, when the user mis-
- // types a URL, or on startup, when the first context will be "").
- ComponentInfo info = list.find(token);
- if (info == null) {
- showInfo();
- return;
+ public void onModuleLoad() {
+ DOM.removeChild(RootPanel.getBodyElement(), DOM.getElementById("loadingMessage"));
+ Field.setMsgTarget("side");
+ QuickTips.init();
+ loggedInUserInfo = new LoggedInUserInfo();
+ loggedInUserInfo.setVisible(false);
+ checkLoggedIn();
}
- show(info, false);
- }
- public void onModuleLoad() {
+ private BorderLayout createMain() {
+ return (new ExplorerLayoutManager(loggedInUserInfo)).getBaseLayout();
+ }
- // Load all the sinks.
- JBRMSFeatureConfigurator.configure(list);
- // Put the sink list on the left, and add the outer dock panel to the
- // root.
- sinkContainer = new DockPanel();
- sinkContainer.setStyleName("ks-Sink");
+ /**
+ * Check if user is logged in, if not, then show prompt.
+ * If it is, then we show the app, in all its glory !
+ */
+ private void checkLoggedIn() {
+ RepositoryServiceFactory.getSecurityService().getCurrentUser( new GenericCallback() {
+ public void onSuccess(Object data) {
+ UserSecurityContext ctx = (UserSecurityContext) data;
+ if ( ctx.userName != null ) {
+ loggedInUserInfo.setUserName( ctx.userName );
+ loggedInUserInfo.setVisible( true );
+ RootPanel.get().add(createMain());
+ } else {
+ final LoginWidget lw = new LoginWidget();
+ lw.setLoggedInEvent(new Command() {
+ public void execute() {
+ loggedInUserInfo.setUserName( lw.getUserName() );
+ loggedInUserInfo.setVisible( true );
+ RootPanel.get().add(createMain());
- VerticalPanel vp = new VerticalPanel();
- vp.setWidth("100%");
- vp.add(description);
- vp.add(sinkContainer);
-
- description.setStyleName("ks-Info");
-
- panel.add(list, DockPanel.WEST);
- panel.add(vp, DockPanel.CENTER);
-
- panel.setCellVerticalAlignment(list, HasAlignment.ALIGN_TOP);
- panel.setCellWidth(vp, "100%");
-
- History.addHistoryListener(this);
-
- loggedInUserInfo = new LoggedInUserInfo();
- loginWidget = new LoginWidget();
-
- RootPanel.get().add( loggedInUserInfo );
- RootPanel.get().add(panel);
- RootPanel.get().add( loginWidget );
- loginWidget.setWidth( "100%" );
-
- loggedInUserInfo.setVisible( false );
- panel.setVisible( false );
- loginWidget.setVisible( false );
-
- checkLoggedIn();
-
- // Show the initial screen.
- String initToken = History.getToken();
- if (initToken.length() > 0)
- onHistoryChanged(initToken);
- else
- showInfo();
- }
-
- /**
- * Check if user is logged in, if not, then show prompt.
- * If it is, then we show the app, in all its glory !
- */
- private void checkLoggedIn() {
-
- RepositoryServiceFactory.getSecurityService().getCurrentUser( new GenericCallback() {
-
- public void onSuccess(Object data) {
- UserSecurityContext ctx = (UserSecurityContext) data;
- if (ctx.userName != null) {
-
- loggedInUserInfo.setUserName( ctx.userName );
- loggedInUserInfo.setVisible( true );
- list.disableFeatures(ctx);
- panel.setVisible( true );
- loginWidget.setVisible( false );
-
-
- } else {
-
- loginWidget.setVisible( true );
- loginWidget.setLoggedInEvent( new Command() {
- public void execute() {
- loggedInUserInfo.setUserName( loginWidget.getUserName() );
- loggedInUserInfo.setVisible( true );
- loginWidget.setVisible( false );
- panel.setVisible( true );
- }
- } );
-
+ }
+ } );
+ lw.show();
+ }
}
- }
-
- });
-
-
-
-
-
- }
-
-
-
-public void show(ComponentInfo info, boolean affectHistory) {
- // Don't bother re-displaying the existing sink. This can be an issue
- // in practice, because when the history context is set, our
- // onHistoryChanged() handler will attempt to show the currently-visible
- // sink.
- if (info == curInfo)
- return;
- curInfo = info;
-
- // Remove the old sink from the display area.
- if (curSink != null) {
- curSink.onHide();
- sinkContainer.remove(curSink);
+ } );
}
- // Get the new sink instance, and display its description in the
- // sink list.
- curSink = info.getInstance();
- list.setSinkSelection(info.getName());
- description.setHTML(info.getDescription());
- // If affectHistory is set, create a new item on the history stack. This
- // will ultimately result in onHistoryChanged() being called. It will call
- // show() again, but nothing will happen because it will request the exact
- // same sink we're already showing.
- if (affectHistory)
- History.newItem(info.getName());
-
- // Display the new sink.
- sinkContainer.add(curSink, DockPanel.CENTER);
- sinkContainer.setCellWidth(curSink, "100%");
- //sinkContainer.setCellHeight(curSink, "100%");
- sinkContainer.setCellVerticalAlignment(curSink, DockPanel.ALIGN_TOP);
- curSink.onShow();
-
- }
-
-
- private void showInfo() {
- show(list.find("Info"), false);
- }
-}
\ No newline at end of file
+}
Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSFeatureConfigurator.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSFeatureConfigurator.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSFeatureConfigurator.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,45 +0,0 @@
-package org.drools.brms.client;
-/*
- * 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.
- */
-
-
-
-/**
- * This contains the list of configured features for the JBRMS console.
- *
- * Modify this to add or remove features.
- *
- * @author Michael Neale
- *
- */
-public class JBRMSFeatureConfigurator {
-
- /**
- * Adds all sinks to the list. Note that this does not create actual
- * instances of all sinks yet (they are created on-demand). This can make a
- * significant difference in startup time.
- */
- public static void configure(JBRMSFeatureList list) {
- list.addSink(Info.init());
- list.addSink(RulesFeature.init());
- list.addSink(PackageManagementFeature.init());
- list.addSink(QAFeature.init());
- //list.addSink(RuleBases.init());
- list.addSink(DeploymentManagementFeature.init());
- list.addSink(AdminFeature.init());
- }
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSFeatureList.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSFeatureList.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/JBRMSFeatureList.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,95 +0,0 @@
-/*
- * 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.
- */
-
-package org.drools.brms.client;
-
-import java.util.ArrayList;
-
-import org.drools.brms.client.JBRMSFeature.ComponentInfo;
-import org.drools.brms.client.rpc.UserSecurityContext;
-
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Hyperlink;
-import com.google.gwt.user.client.ui.VerticalPanel;
-
-/**
- * This is the list of features that make up the rule management console. Refer
- * to the JBRMSFeatureConfigurator which actually sets up the individual
- * features.
- *
- * This is the left panel that contains all of the features, along with a short
- * description of each.
- */
-public class JBRMSFeatureList extends Composite {
-
- private VerticalPanel list = new VerticalPanel();
- private ArrayList sinks = new ArrayList();
-
-
- private int selectedSink = -1;
-
- public JBRMSFeatureList() {
- initWidget(list);
- setStyleName("ks-List");
- }
-
- public void addSink(final ComponentInfo info) {
- String name = info.getName();
- Hyperlink link = new Hyperlink(name, name);
- link.setStyleName("ks-SinkItem");
-
- list.add(link);
- sinks.add(info);
-
- }
-
- public ComponentInfo find(String sinkName) {
- for (int i = 0; i < sinks.size(); ++i) {
- ComponentInfo info = (ComponentInfo) sinks.get(i);
- if (info.getName().equals(sinkName))
- return info;
- }
-
- return null;
- }
-
- public void setSinkSelection(String name) {
- if (selectedSink != -1)
- list.getWidget(selectedSink)
- .removeStyleName("ks-SinkItem-selected");
-
- for (int i = 0; i < sinks.size(); ++i) {
- ComponentInfo info = (ComponentInfo) sinks.get(i);
- if (info.getName().equals(name)) {
- selectedSink = i;
- list.getWidget(selectedSink).addStyleName(
- "ks-SinkItem-selected");
- return;
- }
- }
- }
-
-
-
- public void disableFeatures(UserSecurityContext ctx) {
- for (int i = 0; i < this.list.getWidgetCount(); i++) {
- Hyperlink hl = (Hyperlink) this.list.getWidget(i);
- if (ctx.disabledFeatures.contains(hl.getText())) {
- hl.setVisible(false);
- }
- }
- }
-}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/LoggedInUserInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/LoggedInUserInfo.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/LoggedInUserInfo.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -18,12 +18,10 @@
-import org.drools.brms.client.common.ErrorPopup;
import org.drools.brms.client.common.GenericCallback;
import org.drools.brms.client.rpc.RepositoryServiceFactory;
import org.drools.brms.client.rpc.UserSecurityContext;
-import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
@@ -38,23 +36,18 @@
public LoggedInUserInfo() {
-
widgetcontent = new HTML();
initWidget( widgetcontent );
}
public void setUserName(String userName) {
StringBuffer content = new StringBuffer();
-
-
-
- content.append( "<div id='user_info'>" );
- content.append( "Welcome: " + userName );
- content.append( " <a href='logout.jsp'>[Sign Out]</a>" );
+ content.append( "<div id='user_info' class='headerBarblue'>" );
+ content.append( "<small>Welcome: " + userName );
+ content.append( " <a href='logout.jsp'>[Sign Out]</a></small>" );
content.append( "</div>" );
widgetcontent.setHTML( content.toString() );
-
//we have the timer to keep the session alive.
Timer timer = new Timer() {
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/LoginWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/LoginWidget.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/LoginWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,13 @@
package org.drools.brms.client;
/*
* 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.
@@ -17,6 +17,7 @@
+import org.drools.brms.client.common.ErrorPopup;
import org.drools.brms.client.common.FormStyleLayout;
import org.drools.brms.client.common.GenericCallback;
import org.drools.brms.client.common.LoadingPopup;
@@ -25,45 +26,115 @@
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Window;
-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.PasswordTextBox;
import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.Ext;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.ButtonConfig;
+import com.gwtext.client.widgets.LayoutDialog;
+import com.gwtext.client.widgets.LayoutDialogConfig;
+import com.gwtext.client.widgets.Toolbar;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.ToolbarTextItem;
+import com.gwtext.client.widgets.event.ButtonListener;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.form.Form;
+import com.gwtext.client.widgets.form.FormConfig;
+import com.gwtext.client.widgets.layout.BorderLayout;
+import com.gwtext.client.widgets.layout.ContentPanel;
+import com.gwtext.client.widgets.layout.ContentPanelConfig;
+import com.gwtext.client.widgets.layout.LayoutRegionConfig;
/**
* Used for logging in, obviously !
- *
+ *
* @author Michael Neale
*/
-public class LoginWidget extends Composite {
+public class LoginWidget {
- private FormStyleLayout layout;
+
private TextBox userName;
+ private PasswordTextBox password;
private Command loggedInEvent;
+ private LayoutDialog dialog;
-
- public LoginWidget() {
- layout = new FormStyleLayout("images/login.gif", "Please enter your details");
-
- userName = new TextBox();
- userName.setTabIndex( 1 );
- layout.addAttribute( "User name:", userName );
-
- final PasswordTextBox password = new PasswordTextBox();
- password.setTabIndex( 2 );
- layout.addAttribute( "Password:", password );
-
- Button login = new Button("Login");
- login.setTabIndex( 3 );
- layout.addAttribute( "", login );
-
- login.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
+
+
+ public void show() {
+ LayoutRegionConfig center = new LayoutRegionConfig() {
+ {
+ setAutoScroll(true);
+ setTabPosition("top");
+ setCloseOnTab(true);
+ setAlwaysShowTabs(true);
+ }
+ };
+
+ dialog = new LayoutDialog(new LayoutDialogConfig() {
+ {
+ setModal(true);
+ setWidth(500);
+ setHeight(350);
+ setShadow(true);
+ setResizable(false);
+ setClosable(false);
+ setProxyDrag(true);
+ setTitle("Sign in");
+ }
+ }, center);
+
+
+
+ final BorderLayout layout = dialog.getLayout();
+ layout.beginUpdate();
+
+ ContentPanel signInPanel = new ContentPanel(Ext.generateId(), "Sign In");
+ final Widget signInForm = getSignInForm();
+
+ VerticalPanel signInWrapper = new VerticalPanel() {
+ {
+ setSpacing(30);
+ setWidth("100%");
+ setHorizontalAlignment(VerticalPanel.ALIGN_CENTER);
+ }
+ };
+ signInWrapper.add(signInForm);
+
+ signInPanel.add(signInWrapper);
+ layout.add(LayoutRegionConfig.CENTER, signInPanel);
+
+
+ final Toolbar tb = new Toolbar("my-tb");
+ tb.addButton(new ToolbarButton("About", new ButtonConfig()));
+ tb.addSeparator();
+ tb.addItem(new ToolbarTextItem("Copyright (c) 2006 JBoss, a division of Red Hat."));
+
+ ContentPanel infoPanel = new ContentPanel(Ext.generateId(), new ContentPanelConfig() {
+ {
+ setTitle("Info");
+ setClosable(true);
+ setBackground(true);
+ setToolbar(tb);
+ }
+ });
+ infoPanel.setContent("Drools Business Rule Management System (BRMS). See http://labs.jboss.com/drools/ for more information.");
+
+ layout.add(LayoutRegionConfig.CENTER, infoPanel);
+ layout.endUpdate();
+
+
+ Button login = dialog.addButton("Sign in");
+
+
+ login.addButtonListener( new ButtonListenerAdapter() {
+ public void onClick(Button button, EventObject e) {
LoadingPopup.showMessage( "Logging in..." );
-
- DeferredCommand.add( new Command() {
+
+ DeferredCommand.addCommand( new Command() {
public void execute() {
doLogin( loggedInEvent, userName, password );
}
@@ -71,16 +142,10 @@
}
});
-
-
-
- initWidget( layout );
-
+ dialog.show();
userName.setFocus( true );
-
- setStyleName( "login-Form" );
- }
-
+ }
+
private void doLogin(final Command loggedInEvent, final TextBox userName, final PasswordTextBox password) {
RepositoryServiceFactory.login( userName.getText(), password.getText(), new GenericCallback() {
public void onSuccess(Object o) {
@@ -90,12 +155,29 @@
Window.alert( "Incorrect username or password." );
} else {
loggedInEvent.execute();
+ dialog.destroy();
}
}
});
}
-
-
+
+ private Widget getSignInForm() {
+
+ FormStyleLayout layout = new FormStyleLayout("images/login.gif", "BRMS Login");
+
+ userName = new TextBox();
+ userName.setTabIndex( 1 );
+ layout.addAttribute( "User name:", userName );
+
+ password = new PasswordTextBox();
+ password.setTabIndex( 2 );
+ layout.addAttribute( "Password:", password );
+
+
+ return layout;
+
+ }
+
/**
* Return the name that was entered.
*/
@@ -109,5 +191,6 @@
public void setLoggedInEvent(Command loggedInEvent) {
this.loggedInEvent = loggedInEvent;
}
-
+
+
}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/RulesFeature.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/RulesFeature.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/RulesFeature.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,43 +0,0 @@
-package org.drools.brms.client;
-
-/*
- * 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.brms.client.rulelist.AssetBrowser;
-
-/**
- * This controls the "Rules manager" top level feature.
- *
- * @author Michael Neale
- */
-public class RulesFeature extends JBRMSFeature {
-
- public static ComponentInfo init() {
- return new ComponentInfo("Rules", "Find and edit rules.") {
- public JBRMSFeature createInstance() {
- return new RulesFeature();
- }
-
- };
- }
-
- public RulesFeature() {
- AssetBrowser assetBrowser = new AssetBrowser();
- assetBrowser.setOpenedViewersContainer(JBRMSFeature.openedViewers);
- initWidget(assetBrowser);
- }
-
-}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/ArchivedAssetManager.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/ArchivedAssetManager.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/ArchivedAssetManager.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -47,7 +47,6 @@
TabPanel tab = new TabPanel();
pop.addRow(tab);
EditorLauncher.showLoadEditor( new HashMap(), tab, key, true );
- pop.setPopupPosition(20, 20);
pop.show();
}
}, AssetItemListViewer.ARCHIVED_RULE_LIST_TABLE_ID );
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryExplorerWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryExplorerWidget.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryExplorerWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -22,6 +22,8 @@
import org.drools.brms.client.rpc.RepositoryServiceAsync;
import org.drools.brms.client.rpc.RepositoryServiceFactory;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Button;
@@ -107,34 +109,38 @@
/** This will refresh the tree and restore it back to the original state */
private void loadInitialTree() {
navTreeWidget.addItem( "Please wait..." );
- service.loadChildCategories( "/",
- new GenericCallback() {
+ DeferredCommand.addCommand(new Command() {
+ public void execute() {
+ service.loadChildCategories( "/",
+ new GenericCallback() {
- public void onSuccess(Object result) {
- selectedPath = null;
- navTreeWidget.removeItems();
- String[] categories = (String[]) result;
+ public void onSuccess(Object result) {
+ selectedPath = null;
+ navTreeWidget.removeItems();
+ String[] categories = (String[]) result;
- if (categories.length == 0) {
- showEmptyTree();
- } else {
- hideEmptyTree();
- }
- for ( int i = 0; i < categories.length; i++ ) {
- TreeItem it = new TreeItem();
- it.setHTML( "<img src=\"images/category_small.gif\"/>" + categories[i] );
- it.setUserObject( categories[i] );
- it.addItem( new PendingItem() );
- navTreeWidget.addItem( it );
- }
+ if (categories.length == 0) {
+ showEmptyTree();
+ } else {
+ hideEmptyTree();
+ }
+ for ( int i = 0; i < categories.length; i++ ) {
+ TreeItem it = new TreeItem();
+ it.setHTML( "<img src=\"images/category_small.gif\"/>" + categories[i] );
+ it.setUserObject( categories[i] );
+ it.addItem( new PendingItem() );
+ navTreeWidget.addItem( it );
+ }
- }
+ }
- } );
+ } );
+ }}
+ );
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableComposite.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableComposite.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableComposite.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -16,13 +16,22 @@
* limitations under the License.
*/
+import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.Composite;
public abstract class DirtyableComposite extends Composite implements
DirtyableWidget {
+
protected boolean dirtyflag = false;
+
+ public DirtyableComposite() {
+ }
- /*
+ public void onBrowserEvent(Event event) {
+ super.onBrowserEvent( event );
+ }
+
+ /*
* (non-Javadoc)
*
* @see org.drools.brms.client.common.isDirtable#isDirty()
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -19,116 +19,119 @@
import org.drools.brms.client.rpc.DetailedSerializableException;
-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.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.ButtonConfig;
+import com.gwtext.client.widgets.LayoutDialog;
+import com.gwtext.client.widgets.LayoutDialogConfig;
+import com.gwtext.client.widgets.event.ButtonListener;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.form.Form;
+import com.gwtext.client.widgets.form.FormConfig;
+import com.gwtext.client.widgets.layout.BorderLayout;
+import com.gwtext.client.widgets.layout.ContentPanel;
+import com.gwtext.client.widgets.layout.LayoutRegionConfig;
/**
* Generic error dialog popup.
*/
-public class ErrorPopup extends DialogBox {
+public class ErrorPopup {
public static ErrorPopup instance = null;
+ //new Image("images/error_dialog.png")
- Label errorMessage = new Label();
- Panel panel = new HorizontalPanel();
- Image ok = new ImageButton("images/close.gif");
+ private ErrorPopup(final String message, final String longMessage) {
- private ErrorPopup(String message, String longMessage) {
- super(true);
+ //create and configure layout dialog
+ final LayoutDialog dialog = new LayoutDialog(new LayoutDialogConfig() {
+ {
+ setTitle("Error");
+ setModal(true);
+ setWidth(500);
+ setHeight((longMessage != null) ? 500 : 150);
+ setShadow(true);
+ //setMinHeight(300);
+ //setMinHeight(300);
+ }
+ }, new LayoutRegionConfig());
+ //another way to add button
+ dialog.addButton(new Button("OK", new ButtonConfig() {
+ {
+ setText("Cancel");
+ setButtonListener(new ButtonListenerAdapter() {
+ public void onClick(Button button, EventObject e) {
+ dialog.hide();
+ }
+ });
+ }
+ }));
- this.errorMessage.setText( message );
+ //add content to the center region
+ BorderLayout layout = dialog.getLayout();
+ ContentPanel contentPanel = new ContentPanel();
- panel.add( new Image("images/error_dialog.png") );
- VerticalPanel vert = new VerticalPanel();
- vert.add( errorMessage );
- panel.add( vert );
- if (longMessage != null) {
- addDetail(vert, longMessage);
+ VerticalPanel vp = new VerticalPanel();
+ if (longMessage == null) {
+ vp.add(new HTML("<image src='images/error_dialog.png'/> <strong><b>" + message +"</b></strong>"));
+ } else {
+ vp.add(new HTML("<image src='images/error_dialog.png'/> <strong><b>" + message +"</b></strong><hr/>"));
}
- panel.add( ok );
- final PopupPanel self = this;
- ok.addClickListener( new ClickListener() {
- public void onClick(Widget arg0) {
- self.hide();
- }
- });
- this.setWidget( panel );
- this.setPopupPosition( 40, 40 );
- //setHeight( "150px" );
- setStyleName( "rule-error-Popup" );
- }
+ final SimplePanel detailPanel = new SimplePanel();
+ if (longMessage != null && !"".equals(longMessage)) {
+ Button showD = new Button("Show detail");
+ showD.addButtonListener(new ButtonListenerAdapter() {
+ public void onClick(Button button, EventObject e) {
+ detailPanel.clear();
+ detailPanel.add(new HTML("<small>" + longMessage + "</small>"));
+ }
+ });
+ detailPanel.add(showD);
+ }
+ vp.setWidth("100%");
+ vp.add(detailPanel);
+ contentPanel.add(vp);
+ layout.add(contentPanel);
+ dialog.show();
+ }
- /**
- * Add a detailed report section (which is hidden by default).
- */
- private void addDetail(Panel panel,
- final String detailedError) {
- VerticalPanel vert = new VerticalPanel();
- panel.add( vert );
- final Button show = new Button("Details");
- vert.add( show );
- final Label detail = new Label(detailedError);
- detail.setVisible( false );
- vert.add( detail );
- show.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- detail.setVisible( true );
- show.setVisible( false );
- }
- });
-
- }
-
- public void setMessage(String message) {
- errorMessage.setText( message );
- }
-
-
- public void hide() {
- errorMessage.setText( "" );
- super.hide();
- }
-
-
/** Convenience method to popup the message. */
public static void showMessage(String message) {
- ErrorPopup p = new ErrorPopup(message, null);
- LoadingPopup.close();
-
- p.show();
+ new ErrorPopup(message, null);
}
/**
* For showing a more detailed report.
*/
public static void showMessage(DetailedSerializableException exception) {
- ErrorPopup p = new ErrorPopup(exception.getMessage(), exception.getLongDescription());
+ new ErrorPopup(exception.getMessage(), exception.getLongDescription());
LoadingPopup.close();
- p.show();
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup2.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup2.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup2.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,139 @@
+package org.drools.brms.client.common;
+/*
+ * 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.brms.client.rpc.DetailedSerializableException;
+
+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.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+
+/**
+ * Generic error dialog popup.
+ */
+public class ErrorPopup2 extends DialogBox {
+
+ public static ErrorPopup2 instance = null;
+
+ Label errorMessage = new Label();
+ Panel panel = new HorizontalPanel();
+ Image ok = new ImageButton("images/close.gif");
+
+
+ private ErrorPopup2(String message, String longMessage) {
+ super(true);
+
+
+
+ this.errorMessage.setText( message );
+
+ panel.add( new Image("images/error_dialog.png") );
+ VerticalPanel vert = new VerticalPanel();
+ vert.add( errorMessage );
+ panel.add( vert );
+
+ if (longMessage != null) {
+ addDetail(vert, longMessage);
+ }
+
+ panel.add( ok );
+ final PopupPanel self = this;
+ ok.addClickListener( new ClickListener() {
+ public void onClick(Widget arg0) {
+ self.hide();
+ }
+ });
+ this.setWidget( panel );
+ this.setPopupPosition( 40, 40 );
+ //setHeight( "150px" );
+ setStyleName( "rule-error-Popup" );
+ }
+
+
+
+
+
+ /**
+ * Add a detailed report section (which is hidden by default).
+ */
+ private void addDetail(Panel panel,
+ final String detailedError) {
+ VerticalPanel vert = new VerticalPanel();
+ panel.add( vert );
+ final Button show = new Button("Details");
+ vert.add( show );
+
+ final Label detail = new Label(detailedError);
+ detail.setVisible( false );
+
+
+ vert.add( detail );
+
+ show.addClickListener( new ClickListener() {
+
+ public void onClick(Widget w) {
+ detail.setVisible( true );
+ show.setVisible( false );
+ }
+
+ });
+
+ }
+
+ public void setMessage(String message) {
+ errorMessage.setText( message );
+ }
+
+
+ public void hide() {
+ errorMessage.setText( "" );
+ super.hide();
+ }
+
+
+ /** Convenience method to popup the message. */
+ public static void showMessage(String message) {
+ ErrorPopup2 p = new ErrorPopup2(message, null);
+ LoadingPopup.close();
+
+ p.show();
+ }
+
+ /**
+ * For showing a more detailed report.
+ */
+ public static void showMessage(DetailedSerializableException exception) {
+ ErrorPopup2 p = new ErrorPopup2(exception.getMessage(), exception.getLongDescription());
+ LoadingPopup.close();
+ p.show();
+ }
+
+
+
+
+
+
+}
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup2.java
___________________________________________________________________
Name: svn:eol-style
+ native
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 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,13 @@
package org.drools.brms.client.common;
/*
* 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.
@@ -22,18 +22,17 @@
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
/**
* This form style class is to be extended to provide
* "form style" dialogs (eg in a popup).
- *
+ *
* @author Michael Neale
*/
public class FormStyleLayout extends DirtyableComposite {
-
+
private DirtyableFlexTable layout = new DirtyableFlexTable();
private FlexCellFormatter formatter = layout.getFlexCellFormatter();
private int numInLayout = 0;
@@ -45,12 +44,12 @@
addHeader( image, title );
initWidget( layout );
}
-
+
/** This has no header */
public FormStyleLayout() {
initWidget( layout );
}
-
+
/**
* Clears the layout table.
*/
@@ -64,7 +63,7 @@
*/
public void addAttribute(String lbl,
Widget editor) {
- HTML label = new HTML("<b>" + lbl + "</b>");
+ HTML label = new HTML("<small>" + lbl + "</small>");
layout.setWidget( numInLayout, 0, label );
formatter.setAlignment( numInLayout, 0, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_TOP );
layout.setWidget( numInLayout, 1, editor );
@@ -73,13 +72,7 @@
numInLayout++;
}
- public void addWidget(Widget editor) {
- layout.setWidget( numInLayout, 1, editor );
- formatter.setAlignment( numInLayout, 1, HasHorizontalAlignment.ALIGN_CENTER, HasVerticalAlignment.ALIGN_TOP );
- numInLayout++;
- }
-
/** Adds a widget that takes up a whole row. */
public void addRow(Widget w) {
layout.setWidget( numInLayout, 0, w);
@@ -91,7 +84,7 @@
* Adds a header at the top.
*/
protected void addHeader(String image, String title) {
- Label name = new Label(title);
+ HTML name = new HTML("<small><b>" + title + "</b></small>");
name.setStyleName( "resource-name-Label" );
doHeader( image, name );
}
@@ -102,26 +95,30 @@
layout.setWidget( 0, 1, title );
numInLayout++;
}
-
-
-
+
+
+
protected void addHeader(String image, String title, Widget titleIcon) {
- Label name = new Label(title);
+ HTML name = new HTML("<small><b>" + title + "</b></small>");
name.setStyleName( "resource-name-Label" );
HorizontalPanel horiz = new HorizontalPanel();
horiz.add( name );
horiz.add( titleIcon );
doHeader( image, horiz );
-
+
}
-
+
public void setFlexTableWidget(int row, int col, Widget widget){
layout.setWidget( row, col, widget );
}
-
+
public boolean isDirty() {
return layout.hasDirty();
- }
+ }
+ public int getNumAttributes() {
+ return numInLayout;
+ }
+
}
\ No newline at end of file
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 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,13 @@
package org.drools.brms.client.common;
/*
* 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.
@@ -17,45 +17,92 @@
-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.Widget;
+import com.gwtext.client.widgets.LayoutDialog;
+import com.gwtext.client.widgets.LayoutDialogConfig;
+import com.gwtext.client.widgets.layout.BorderLayout;
+import com.gwtext.client.widgets.layout.ContentPanel;
+import com.gwtext.client.widgets.layout.LayoutRegionConfig;
/**
- * This builds on the FormStyleLayout for providing common popup features in a
+ * This builds on the FormStyleLayout for providing common popup features in a
* columnar form layout, with a title and a large (ish) icon.
- *
+ *
* @author Michael Neale
*/
-public class FormStylePopup extends PopupPanel {
+public class FormStylePopup {
-
+
private FormStyleLayout form;
-
+ private LayoutDialog dialog;
+ private String title;
+
+ private Boolean shadow;
+ private Integer width;
+ private Integer height;
+
public FormStylePopup(String image,
- String title) {
- super( true );
+ final String title) {
+
form = new FormStyleLayout( image, title );
- this.setStyleName( "ks-popups-Popup" );
+ this.title = title;
- Image close = new ImageButton("images/close.gif");
- close.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- hide();
- }
- });
+ }
- form.setFlexTableWidget( 0, 2, close );
- add( form );
-
+ public FormStylePopup(String image, final String title, Integer width, Integer height, Boolean shadow) {
+ this(image, title);
+ this.shadow = shadow;
+ this.height = height;
+ this.width = width;
}
+
+
public void addAttribute(String label, Widget wid) {
form.addAttribute( label, wid );
}
-
+
public void addRow(Widget wid) {
form.addRow( wid );
}
+
+ public void hide() {
+ this.dialog.destroy();
+ }
+
+
+
+ public void show() {
+ LayoutRegionConfig center = new LayoutRegionConfig() {
+ {
+ setAutoScroll(true);
+ setAlwaysShowTabs(false);
+ }
+ };
+
+
+ dialog = new LayoutDialog(new LayoutDialogConfig() {
+ {
+ setModal(true);
+ setWidth((width == null)? 500 : width.intValue());
+ setHeight((height == null)? form.getNumAttributes() * 40 + 100 : height.intValue());
+ setShadow((shadow == null)? true : shadow.booleanValue());
+ setResizable(true);
+ setClosable(true);
+ setProxyDrag(true);
+ setTitle(title);
+ }
+ }, center);
+
+
+ final BorderLayout layout = dialog.getLayout();
+
+ ContentPanel cp = new ContentPanel();
+ layout.add(cp);
+
+
+ cp.add(form);
+
+ this.dialog.show();
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/GenericCallback.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/GenericCallback.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/GenericCallback.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -22,6 +22,11 @@
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
+import com.gwtext.client.widgets.LayoutDialog;
+import com.gwtext.client.widgets.LayoutDialogConfig;
+import com.gwtext.client.widgets.layout.BorderLayout;
+import com.gwtext.client.widgets.layout.ContentPanel;
+import com.gwtext.client.widgets.layout.LayoutRegionConfig;
/**
* This is a generic call back that handles errors (very simply).
@@ -46,11 +51,27 @@
public static void showSessionExpiry() {
- FormStylePopup pop = new FormStylePopup("images/warning-large.png", "Session expired");
- pop.addRow( new HTML("<i>Your session expired due to inactivity.</i>" +
- " Please <a href='/drools-jbrms/'>[Log in].</a>") );
- pop.setPopupPosition( 40, 40 );
- pop.show();
+
+
+ final LayoutDialog dialog = new LayoutDialog(new LayoutDialogConfig() {
+ {
+ setTitle("Session expired");
+ setModal(true);
+ setWidth(500);
+ setHeight(300);
+ setShadow(true);
+ setMinHeight(300);
+ setMinHeight(300);
+ }
+ }, new LayoutRegionConfig());
+
+ //add content to the center region
+ BorderLayout layout = dialog.getLayout();
+ ContentPanel contentPanel = new ContentPanel();
+ contentPanel.add(new HTML("<i>Your session expired due to inactivity.</i>" +
+ " Please <a href='/drools-jbrms/'>[Log in].</a>"));
+ layout.add(contentPanel);
+ dialog.show();
LoadingPopup.close();
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/InfoPopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/InfoPopup.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/InfoPopup.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,13 @@
package org.drools.brms.client.common;
/*
* 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.
@@ -25,7 +25,7 @@
/**
* This is handy for in-place context help.
- *
+ *
* @author Michael Neale
*/
public class InfoPopup extends Composite {
@@ -37,7 +37,7 @@
public void onClick(Widget w) {
final FormStylePopup pop = new FormStylePopup("images/information.gif", title);
pop.addRow( new Lbl(message, "small-Text") );
- pop.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+
pop.show();
}
} );
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/LoadingPopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/LoadingPopup.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/LoadingPopup.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -17,6 +17,7 @@
+import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
@@ -24,33 +25,21 @@
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.widgets.MessageBox;
+import com.gwtext.client.widgets.MessageBoxConfig;
/**
* Generic "busy" dialog popup.
* This is a lazy singleton, only really need one to be shown at time.
*/
-public class LoadingPopup extends PopupPanel {
+public class LoadingPopup {
public static LoadingPopup instance = null;
- Label errorMessage = new Label();
- Panel panel = new HorizontalPanel();
- Image ok = new Image("images/close.gif");
- public LoadingPopup() {
- super(false);
- panel.add( errorMessage );
- panel.add( ok );
- panel.add( new Image("images/searching.gif") );
- ok.addClickListener( new ClickListener() {
- public void onClick(Widget arg0) {
- hide();
- }
- });
- this.add( panel );
- this.setPopupPosition( 0, 0 );
- setStyleName( "loading-Popup" );
+
+ private LoadingPopup() {
}
@@ -58,14 +47,10 @@
* Close the single instance of this dialog...
*/
public static void close() {
- getInstance().hide();
+ MessageBox.hide();
}
- public void hide() {
- errorMessage.setText( "" );
- super.hide();
- }
public static LoadingPopup getInstance() {
if (instance == null) {
@@ -75,11 +60,16 @@
}
/** Convenience method to popup the message. */
- public static void showMessage(String message) {
- LoadingPopup p = getInstance();
+ public static void showMessage(final String message) {
+ MessageBox.show(new MessageBoxConfig() {
+ {
- p.errorMessage.setText( message );
- p.show();
+ setTitle("Please wait...");
+
+ setMsg(message);
+ setClosable(true);
+ }
+ });
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/PrettyFormLayout.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/PrettyFormLayout.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/PrettyFormLayout.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,119 @@
+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.FlowPanel;
+import com.google.gwt.user.client.ui.HasHorizontalAlignment;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.Ext;
+import com.gwtext.client.util.DOMUtil;
+import com.gwtext.client.widgets.form.Form;
+import com.gwtext.client.widgets.form.FormConfig;
+
+/**
+ * Uses ext forms to do a prettier layout.
+ *
+ * @author Michael Neale
+ */
+public class PrettyFormLayout extends Composite {
+
+ private VerticalPanel layout = new VerticalPanel();
+ private FlexTable currentTable;
+ private String sectionName;
+
+ public PrettyFormLayout() {
+ layout.setWidth("100%");
+ initWidget(layout);
+ }
+
+ public void startSection() {
+ this.currentTable = new FlexTable();
+ }
+
+ public void startSection(String title) {
+ startSection();
+ this.sectionName = title;
+ }
+
+ public void clear() {
+ this.layout.clear();
+ }
+
+ public void addHeader(String img, String name, Image edit) {
+ HorizontalPanel h = new HorizontalPanel();
+ h.add(new Image(img));
+ h.add(new Label(name));
+ if (edit != null) h.add(edit);
+
+
+ Form f = newForm(null);
+ String id = Ext.generateId();
+ f.container(id);
+ f.end();
+ f.render();
+ DOMUtil.convertDivToPanel(id).add(h);
+
+ layout.add(f);
+ }
+
+ public void addHeader(String img, Widget content) {
+ HorizontalPanel h = new HorizontalPanel();
+ h.add(new Image(img));
+ h.add(content);
+ Form f = newForm(null);
+ String id = Ext.generateId();
+ f.container(id);
+ f.end();
+ f.render();
+ DOMUtil.convertDivToPanel(id).add(h);
+
+ layout.add(f);
+ }
+
+ private Form newForm(final String hdr) {
+ return new Form(new FormConfig() {
+ {
+ setWidth("100%");
+ setSurroundWithBox(true);
+ if (hdr != null) {
+ setHeader(hdr);
+ }
+ }
+ });
+ }
+
+ public void endSection() {
+
+ Form f = newForm(this.sectionName);
+
+ String id = Ext.generateId();
+ f.container(id);
+ f.end();
+ f.render();
+
+ FlowPanel fp = DOMUtil.convertDivToPanel(id);
+ fp.add(this.currentTable);
+ this.layout.add(f);
+ this.sectionName = null;
+ }
+
+ public void addRow(final Widget versionBrowser) {
+ int i = currentTable.getRowCount();
+ currentTable.setWidget(i, 0, versionBrowser);
+ currentTable.getFlexCellFormatter().setColSpan(i, 0, 2);
+ }
+
+
+ public void addAttribute(String lbl, final Widget categories) {
+ int i = this.currentTable.getRowCount();
+ currentTable.setWidget(i, 0, new Label(lbl));
+ currentTable.setWidget(i, 1, categories);
+ currentTable.getFlexCellFormatter().setHorizontalAlignment(i, 0, HasHorizontalAlignment.ALIGN_RIGHT);
+ }
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/PrettyFormLayout.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/RulePackageSelector.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/RulePackageSelector.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/RulePackageSelector.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -22,6 +22,8 @@
import org.drools.brms.client.rpc.PackageConfigData;
import org.drools.brms.client.rpc.RepositoryServiceFactory;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.ListBox;
@@ -38,8 +40,19 @@
public RulePackageSelector() {
packageList = new ListBox();
- RepositoryServiceFactory.getService().listPackages( new GenericCallback() {
+ DeferredCommand.addCommand(new Command() {
+ public void execute() {
+ loadPackageList();
+ }
+ });
+
+ initWidget( packageList );
+ }
+
+ private void loadPackageList() {
+ RepositoryServiceFactory.getService().listPackages( new GenericCallback() {
+
public void onSuccess(Object o) {
PackageConfigData[] list = (PackageConfigData[]) o;
@@ -54,11 +67,8 @@
}
});
+ }
-
- initWidget( packageList );
- }
-
/**
* Returns the selected package.
*/
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/BRMSContentManager.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/BRMSContentManager.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/BRMSContentManager.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,62 @@
+package org.drools.brms.client.explorer;
+
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.gwtext.client.core.Ext;
+import com.gwtext.client.core.UpdateManager;
+import com.gwtext.client.widgets.layout.ContentPanel;
+import com.gwtext.client.widgets.layout.event.ContentPanelListenerAdapter;
+import com.gwtext.client.widgets.tree.TreeNode;
+
+public abstract class BRMSContentManager {
+
+ private boolean init = false;
+ protected ContentPanel[] panels;
+
+ public ContentPanel[] getPanels() {
+ if (!init) {
+ init = true;
+ setup();
+ }
+ return panels;
+ }
+
+ public abstract void setup();
+
+ protected VerticalPanel createPanel() {
+ VerticalPanel vp = new VerticalPanel();
+ vp.setSpacing(15);
+ return vp;
+ }
+
+ protected ContentPanel getUrlContentPanel(String label, String sourceUrl) {
+ ContentPanel panel = new ContentPanel(Ext.generateId(), label);
+
+ final UpdateManager updateManager = panel.getUpdateManager();
+ updateManager.setDefaultUrl(sourceUrl);
+ updateManager.setLoadScripts(true);
+ updateManager.setDisableCaching(false);
+
+ panel.addContentPanelListener(new ContentPanelListenerAdapter() {
+ public void onActivate(final ContentPanel cp) {
+ Timer t = new Timer() {
+ public void run() {
+ if (cp.getEl().isVisible()) {
+ updateManager.refresh();
+ cp.purgeListeners();
+ }
+ }
+ };
+ t.schedule(1000);
+ }
+ });
+ return panel;
+ }
+
+ public static String getScreenName(TreeNode node, String name) {
+ TreeNode parentNode = (TreeNode) node.getParentNode();
+ return (parentNode == null || parentNode.getParentNode() == null) ? name
+ : getScreenName(parentNode, parentNode.getText() + ">" + name);
+ }
+
+}
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/BRMSContentManager.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerLayoutManager.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerLayoutManager.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerLayoutManager.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,531 @@
+package org.drools.brms.client.explorer;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.drools.brms.client.LoggedInUserInfo;
+import org.drools.brms.client.admin.ArchivedAssetManager;
+import org.drools.brms.client.admin.BackupManager;
+import org.drools.brms.client.admin.CategoryManager;
+import org.drools.brms.client.admin.StateManager;
+import org.drools.brms.client.common.ErrorPopup;
+import org.drools.brms.client.common.GenericCallback;
+import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.packages.PackageManagerView;
+import org.drools.brms.client.packages.SuggestionCompletionCache;
+import org.drools.brms.client.rpc.PackageConfigData;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+import org.drools.brms.client.rpc.RuleAsset;
+import org.drools.brms.client.ruleeditor.NewAssetWizard;
+import org.drools.brms.client.ruleeditor.RuleViewer;
+import org.drools.brms.client.rulelist.AssetItemGrid;
+import org.drools.brms.client.rulelist.AssetItemGridDataLoader;
+import org.drools.brms.client.rulelist.EditItemEvent;
+import org.drools.brms.client.rulelist.QuickFindWidget;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.ui.DockPanel;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.Ext;
+import com.gwtext.client.data.Node;
+import com.gwtext.client.data.NodeTraversalCallback;
+import com.gwtext.client.util.DelayedTask;
+import com.gwtext.client.util.Format;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.ButtonConfig;
+import com.gwtext.client.widgets.QuickTips;
+import com.gwtext.client.widgets.TabPanel;
+import com.gwtext.client.widgets.TabPanelItem;
+import com.gwtext.client.widgets.Toolbar;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.event.TabPanelItemListener;
+import com.gwtext.client.widgets.event.TabPanelItemListenerAdapter;
+import com.gwtext.client.widgets.event.TabPanelListener;
+import com.gwtext.client.widgets.event.TabPanelListenerAdapter;
+import com.gwtext.client.widgets.form.Field;
+import com.gwtext.client.widgets.form.TextField;
+import com.gwtext.client.widgets.layout.BorderLayout;
+import com.gwtext.client.widgets.layout.ContentPanel;
+import com.gwtext.client.widgets.layout.LayoutRegion;
+import com.gwtext.client.widgets.layout.LayoutRegionConfig;
+import com.gwtext.client.widgets.layout.event.ContentPanelListener;
+import com.gwtext.client.widgets.layout.event.ContentPanelListenerAdapter;
+import com.gwtext.client.widgets.tree.AsyncTreeNode;
+import com.gwtext.client.widgets.tree.AsyncTreeNodeConfig;
+
+import com.gwtext.client.widgets.tree.TreeNode;
+import com.gwtext.client.widgets.tree.TreeNodeConfig;
+import com.gwtext.client.widgets.tree.TreePanel;
+import com.gwtext.client.widgets.tree.TreePanelConfig;
+import com.gwtext.client.widgets.tree.XMLTreeLoader;
+import com.gwtext.client.widgets.tree.XMLTreeLoaderConfig;
+import com.gwtext.client.widgets.tree.event.TreeNodeListener;
+import com.gwtext.client.widgets.tree.event.TreeNodeListenerAdapter;
+import com.gwtext.client.widgets.tree.event.TreePanelListener;
+import com.gwtext.client.widgets.tree.event.TreePanelListenerAdapter;
+
+public class ExplorerLayoutManager {
+
+ private Map screens = new HashMap();
+
+ private BorderLayout layout;
+ private boolean packagesLoaded = false;
+
+ ExplorerViewCenterPanel centertabbedPanel;
+
+ private VerticalPanel packagesPanel;
+
+ public BorderLayout getBaseLayout() {
+ return layout;
+ }
+
+ public ExplorerLayoutManager(LoggedInUserInfo uif) {
+ Field.setMsgTarget("side");
+ QuickTips.init();
+
+ layout = createBorderLayout();
+
+ centertabbedPanel = new ExplorerViewCenterPanel();
+
+ ContentPanel ncp = new ContentPanel("north", "North Title");
+
+
+ // setup the main / center panel
+ ContentPanel centerPanel = new ContentPanel("center-panel");
+ /*
+ VerticalPanel contentPanel = new VerticalPanel();
+ contentPanel.setWidth("100%");
+ contentPanel.setHeight("100%");
+
+ contentPanel.add(centertabbedPanel);
+ */
+ centerPanel.add(centertabbedPanel);
+
+ layout.add(LayoutRegionConfig.CENTER, centerPanel);
+
+ DockPanel dock = new DockPanel();
+ dock.setVerticalAlignment(DockPanel.ALIGN_MIDDLE);
+ dock.add(new HTML("<div class='headerBarblue'><img src='images/hdrlogo_drools50px.gif' /></div>"),DockPanel.WEST);
+
+ dock.add(uif, DockPanel.EAST);
+
+ dock.setStyleName("headerBarblue");
+
+ dock.setWidth("100%");
+ ncp.add(dock);
+
+
+ layout.add(LayoutRegionConfig.NORTH, ncp);
+
+
+ // add a navigation tree menu
+
+ final TabPanel tp = new TabPanel("tab-1");
+ tp.setWidth("100%");
+ tp.setHeight("100%");
+
+ TabPanelItem tpCategory = tp.addTab("tpi1", "Rules", false);
+ TabPanelItem tpPackageExplorer = tp.addTab("tpi2", "Packages", false);
+ TabPanelItem tpArchivedAssetManager = tp.addTab("tpi3", "Deployment",
+ false);
+ TabPanelItem tpBackupManager = tp.addTab("tpi4", "Admin", false);
+
+ VerticalPanel vp1 = new VerticalPanel();
+ packagesPanel = new VerticalPanel();
+ VerticalPanel vp3 = new VerticalPanel();
+ VerticalPanel vp4 = new VerticalPanel();
+
+ // vp1.add(categoriesExplorer(layout, "drools-rules"));
+
+ /** **************************** */
+ ContentPanel baseCategory = new ContentPanel("eg-explorer",
+ "BRMS Explorer");
+ baseCategory.setWidth(" 100%");
+
+ TreePanel categoryTree = basicTreeStructure(ExplorerNodeConfig
+ .getRulesStructure(), new TreePanelListenerAdapter() {
+
+ public void onClick(final TreeNode self, EventObject e) {
+
+ //this refreshes the list.
+ if (self.getAttribute("id").equals(
+ ExplorerNodeConfig.CATEGORY_ID)) {
+ self.getParentNode().replaceChild(
+ ExplorerNodeConfig.getCategoriesStructure(), self);
+ } else if (self.getAttribute("id").equals(
+ ExplorerNodeConfig.STATES_ID)) {
+ self.getParentNode().replaceChild(
+ ExplorerNodeConfig.getStatesStructure(), self);
+ } else if (self.getAttribute("id").equals("FIND")) {
+ centertabbedPanel.openFind();
+ } else {
+
+ final String key = (String) self.getUserObject();
+ final boolean isState = key.startsWith("-");
+
+ if (!centertabbedPanel.showIfOpen(key)) {
+ AssetItemGrid list = new AssetItemGrid(new EditItemEvent() {
+ public void open(String uuid) {
+ centertabbedPanel.openAsset( uuid);
+ }
+ },
+ AssetItemGrid.RULE_LIST_TABLE_ID,
+ new AssetItemGridDataLoader() {
+ public void loadData(int skip, int numberOfRows, GenericCallback cb) {
+ if (isState) {
+ RepositoryServiceFactory.getService().loadRuleListForState(key.substring(1) , skip, numberOfRows, cb);
+ } else {
+ RepositoryServiceFactory.getService().loadRuleListForCategories(key, skip, numberOfRows, cb);
+ }
+ }
+ }
+ );
+
+ centertabbedPanel.addTab(((isState) ?"State: " : "Category: ") + self.getText(), true, list, key);
+ }
+
+ }
+
+ }
+ });
+ centertabbedPanel.openFind();
+
+ baseCategory.add(categoryTree);
+ Toolbar tb = new Toolbar(Ext.generateId());
+ vp1.add(tb);
+ tb.addButton(new ToolbarButton(new ButtonConfig() {
+ {
+ setText("New rule");
+ setButtonListener(new ButtonListenerAdapter() {
+ public void onClick(Button button, EventObject e) {
+ NewAssetWizard n = new NewAssetWizard(new EditItemEvent() {
+ public void open(String key) {
+ centertabbedPanel.openAsset(key);
+ }
+ }, true, null, "New rule" );
+ n.show();
+ }
+ });
+ }
+ }));
+ vp1.add(baseCategory);
+ vp1.setWidth("100%");
+
+
+ /** **************************** */
+
+
+
+
+ vp3.add(createExamplesExplorer(layout, "drools-deployment"));
+
+ /** ****************** */
+ ContentPanel cp = new ContentPanel("eg-explorer", "BRMS Explorer");
+ cp.setWidth(" 100%");
+
+ TreePanel adminTree = basicTreeStructure(ExplorerNodeConfig
+ .getAdminStructure(), new TreePanelListenerAdapter() {
+ public void onClick(TreeNode self, EventObject e) {
+
+
+ int id = Integer.parseInt(self.getAttribute("id"));
+ switch (id) {
+ case 0:
+ centertabbedPanel.addTab("Category Manager", true, new CategoryManager(), "catman");
+ break;
+ case 1:
+ centertabbedPanel.addTab("Archived Manager", true, new ArchivedAssetManager(), "archman");
+ break;
+
+ case 2:
+ centertabbedPanel.addTab("State Manager", true, new StateManager(), "stateman");
+ break;
+ case 3:
+ centertabbedPanel.addTab("Backup Manager", true, new BackupManager(), "bakman");
+ break;
+
+ case 4:
+ break;
+ }
+
+ }
+ });
+
+ cp.add(adminTree);
+ vp4.add(cp);
+
+ /** ****************** */
+
+ tpCategory.setContent(vp1);
+
+
+ tpPackageExplorer.setContent(packagesPanel);
+ tpArchivedAssetManager.setContent(vp3);
+ tpBackupManager.setContent(vp4);
+ tpPackageExplorer.addTabPanelItemListener(new TabPanelItemListenerAdapter() {
+ public void onActivate(TabPanelItem tab) {
+ if (!packagesLoaded) {
+ packagesPanel.add(packageExplorer(centertabbedPanel));
+ packagesLoaded = true;
+ }
+ }
+ });
+
+
+ tp.activate(0);
+
+
+ ContentPanel tree = new ContentPanel();
+ tree.add(tp);
+ layout.add(LayoutRegionConfig.WEST, tree);
+ }
+
+
+ private TreePanel basicTreeStructure(TreeNode basenode, TreePanelListenerAdapter listener) {
+
+ TreePanel adminTreePanel = genericExplorerWidget(basenode);
+
+ adminTreePanel.addTreePanelListener(listener);
+ return adminTreePanel;
+ }
+
+ private BorderLayout createBorderLayout() {
+
+ LayoutRegionConfig north = new LayoutRegionConfig();
+ north.setSplit(false);
+ north.setInitialSize(50);
+ north.setTitlebar(false);
+ north.setAutoScroll(false);
+
+ LayoutRegionConfig west = new LayoutRegionConfig();
+ west.setSplit(true);
+ west.setInitialSize(300);
+ west.setMinSize(175);
+ west.setMaxSize(400);
+ west.setTitlebar(true);
+ west.setCollapsible(true);
+ west.setAnimate(true);
+ west.setCollapsed(false);
+ west.setAutoScroll(false);
+
+
+ LayoutRegionConfig center = new LayoutRegionConfig();
+ center.setTitlebar(false);
+ center.setAutoScroll(true);
+ center.setTabPosition("top");
+
+ return new BorderLayout("100%", "100%", north, null, west, null, center );
+ }
+
+ private ContentPanel createExamplesExplorer(final BorderLayout layout,
+ final String menuconfig) {
+
+ // create and configure the main tree
+ final TreePanel menuTree = new TreePanel("eg-tree",
+ new TreePanelConfig() {
+ {
+ setAnimate(true);
+ setEnableDD(true);
+ setContainerScroll(true);
+ setRootVisible(true);
+ }
+ });
+
+
+
+ final XMLTreeLoader loader = new XMLTreeLoader(
+ new XMLTreeLoaderConfig() {
+ {
+
+ setDataUrl("site-nav.xml");
+ setMethod("get");
+ setRootTag(menuconfig);
+ setFolderTag("node");
+ setFolderTitleMapping("@title");
+ setLeafTitleMapping("@title");
+ setLeafTag("leaf");
+ }
+ });
+
+ AsyncTreeNode root = new AsyncTreeNode("", new AsyncTreeNodeConfig() {
+ {
+ setLoader(loader);
+ }
+ });
+
+ // setup a tree listener that reads the content panel associated with
+ // the
+ // node that is clicked and then displays it in the main / center panel
+ TreePanelListener treePanelListener = new TreePanelListenerAdapter() {
+ public void onClick(TreeNode self, EventObject e) {
+ String screenName = BRMSContentManager.getScreenName(self, self
+ .getText());
+ if (screens.containsKey(screenName)) {
+ BRMSContentManager panel = (BRMSContentManager) screens
+ .get(screenName);
+ LayoutRegion region = layout
+ .getRegion(LayoutRegionConfig.CENTER);
+ region.removeAll(true);
+ ContentPanel[] panels = panel.getPanels();
+ for (int i = 0; i < panels.length; i++) {
+ ContentPanel contentPanel = panels[i];
+ layout.add(contentPanel);
+ }
+ region.showPanel(0);
+ }
+ System.out.println("Clicked on Node: " + self.getText());
+ System.out.println("Clicked on Node: "
+ + self.getAttribute("id"));
+ }
+ };
+
+ // register listener
+ menuTree.addTreePanelListener(treePanelListener);
+
+ menuTree.setRootNode(root);
+ // menuTree.getRootNode().appendChild( child )
+ menuTree.render();
+
+ // loads tree data asynchronously
+ root.expand();
+
+ menuTree.expandAll();
+
+ ContentPanel cp = new ContentPanel("eg-explorer", "BRMS Explorer");
+
+ cp.setWidth(" 100%");
+ cp.add(menuTree);
+
+ return cp;
+ }
+
+ /**
+ * Build the package explorer panel.
+ */
+ private ContentPanel packageExplorer(
+ final ExplorerViewCenterPanel tabPanel) {
+
+ final ContentPanel cp = new ContentPanel(Ext.generateId(), "Package Explorer");
+ cp.setWidth(" 100%");
+
+ TreeNode root = new TreeNode("Packages");
+ root.setAttribute("icon", "images/silk/chart_organisation.gif");
+
+ final TreePanel panel = genericExplorerWidget(root);
+ cp.add(panel);
+ loadPackages(root);
+
+
+ TreePanelListener treePanelListener = new TreePanelListenerAdapter() {
+ public void onClick(TreeNode node, EventObject e) {
+ if (node.getUserObject() instanceof PackageConfigData) {
+ String uuid = ((PackageConfigData) node.getUserObject()).uuid;
+ centertabbedPanel.openPackageEditor(uuid, new Command() {
+ public void execute() {
+ //refresh the package tree.
+ packagesPanel.remove(1);
+ packagesPanel.add(packageExplorer(centertabbedPanel));
+ }
+ });
+ } else if (node.getUserObject() instanceof Object[] ){
+ Object[] uo = (Object[]) node.getUserObject();
+ final String[] fmts = (String[]) uo[0];
+ final PackageConfigData pc = (PackageConfigData) node.getParentNode().getUserObject();
+ String key = key(fmts, pc);
+ if (!centertabbedPanel.showIfOpen(key)) {
+ AssetItemGrid list = new AssetItemGrid(new EditItemEvent() {
+ public void open(String uuid) {
+ centertabbedPanel.openAsset(uuid);
+ }
+ },
+ AssetItemGrid.RULE_LIST_TABLE_ID,
+ new AssetItemGridDataLoader() {
+ public void loadData(int skip, int numRows, GenericCallback cb) {
+ RepositoryServiceFactory.getService().listAssets(pc.uuid, fmts, skip, numRows, cb);
+ }
+ }
+ );
+
+ tabPanel.addTab(uo[1] + " [" + pc.name + "]", true, list, key);
+ }
+ }
+ }
+
+
+
+
+ public void onCollapse(final TreeNode node) {
+ if (node.getText().equals("Packages")) {
+ Node[] children = node.getChildNodes();
+ for (int i = 0; i < children.length; i++) {
+ node.removeChild(children[i]);
+ }
+ loadPackages(node);
+ }
+ }
+
+
+ };
+ // register listener
+ panel.addTreePanelListener(treePanelListener);
+ panel.render();
+
+ return cp;
+ }
+
+ private void loadPackages(final TreeNode root) {
+ RepositoryServiceFactory.getService().listPackages(
+ new GenericCallback() {
+ public void onSuccess(Object data) {
+ PackageConfigData value[] = (PackageConfigData[]) data;
+ for (int i = 0; i < value.length; i++) {
+ root.appendChild(loadPackage(root, value[i]));
+ }
+ root.expand();
+ }
+ });
+ }
+
+ private String key(String[] fmts,
+ PackageConfigData userObject) {
+ String key = userObject.uuid;
+ for (int i = 0; i < fmts.length; i++) {
+ key = key + fmts[i];
+ }
+ return key;
+ }
+
+ private TreeNode loadPackage(final TreeNode root,
+ PackageConfigData packagedata) {
+ TreeNode pn = ExplorerNodeConfig.getPackageItemStructure(packagedata.name, packagedata.uuid);
+ pn.setUserObject(packagedata);
+ return pn;
+ }
+
+ private TreePanel genericExplorerWidget(final TreeNode childNode) {
+ // create and configure the main tree
+ final TreePanel menuTree = new TreePanel(Ext.generateId(),
+ new TreePanelConfig() {
+ {
+ setAnimate(true);
+ setEnableDD(true);
+ setContainerScroll(true);
+ setRootVisible(true);
+ }
+ });
+
+ menuTree.setRootNode(childNode);
+ menuTree.render();
+
+ menuTree.expandAll();
+
+ return menuTree;
+ }
+
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerLayoutManager.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerNodeConfig.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerNodeConfig.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerNodeConfig.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,213 @@
+package org.drools.brms.client.explorer;
+
+import org.drools.brms.client.common.AssetFormats;
+import org.drools.brms.client.common.GenericCallback;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+
+import com.gwtext.client.data.Node;
+import com.gwtext.client.widgets.tree.TreeNode;
+import com.gwtext.client.widgets.tree.TreeNodeConfig;
+import com.gwtext.client.widgets.tree.event.TreeNodeListenerAdapter;
+
+/*
+ * This class contains static node config for BRMS' explorer widget
+ */
+public class ExplorerNodeConfig {
+
+ public static String CATEGORY_ID = "category";
+ public static String STATES_ID = "states";
+
+ public static TreeNode getPackageItemStructure(String packageName, String uuid) {
+
+ TreeNode pkg = new TreeNode(packageName);
+ pkg.setAttribute("uuid", uuid);
+ pkg.setAttribute("icon", "images/package.gif");
+
+ pkg.appendChild( makeItem( "Business rule assets",
+ "images/rule_asset.gif", AssetFormats.BUSINESS_RULE_FORMATS ) );
+ pkg.appendChild( makeItem( "Technical rule assets",
+ "images/technical_rule_assets.gif", new String[]{AssetFormats.DRL} ) );
+ pkg.appendChild( makeItem( "Functions",
+ "images/function_assets.gif", new String[]{AssetFormats.FUNCTION} ) );
+ pkg.appendChild( makeItem( "DSL configurations",
+ "images/dsl.gif",
+
+ new String[]{AssetFormats.DSL} ) );
+ pkg.appendChild( makeItem( "Model",
+ "images/model_asset.gif",
+
+ new String[]{AssetFormats.MODEL} ) ) ;
+
+ pkg.appendChild( makeItem( "Rule Flows",
+ "images/ruleflow_small.gif",
+
+ new String[]{AssetFormats.RULE_FLOW_RF} ) ) ;
+
+ pkg.appendChild( makeItem( "Enumerations",
+ "images/enumeration.gif",
+
+ new String[]{AssetFormats.ENUMERATION} ) ) ;
+
+
+ pkg.appendChild(makeItem( "Test Scenarios",
+ "images/test_manager.gif",
+
+ new String[]{AssetFormats.TEST_SCENARIO} ) ) ;
+
+
+ return pkg;
+ }
+
+ private static TreeNode makeItem(final String txt, final String img,
+ final String[] formats) {
+ TreeNode tn = new TreeNode(new TreeNodeConfig() {
+ {
+ setIcon(img);
+ setText(txt);
+
+ }
+ });
+ tn.setUserObject(new Object[] {formats, txt});
+ return tn;
+ }
+
+ public static TreeNode getAdminStructure() {
+
+ TreeNode adminNode = new TreeNode("Admin");
+ adminNode.setAttribute("icon", "images/managment.gif");
+
+ String[][] adminStructure = new String[][] {
+ { "Categories", "images/category_small.gif" }, // ID 0
+ { "Archived Assets", "images/backup_small.gif" }, // ID 1
+ { "State", "images/tag.png" }, // ID 2
+ { "Import/Export", "images/save_edit.gif" }, // ID 3
+ { "Users", "images/icoUsers.gif" }, // ID 4
+ { "Security", "images/login.gif" } }; // ID 5
+
+ for (int i = 0; i < adminStructure.length; i++) {
+
+ String[] packageData = adminStructure[i];
+ TreeNode localChildNode = new TreeNode(packageData[0]);
+ localChildNode.setAttribute("icon", packageData[1]);
+ localChildNode.setAttribute("id", String.valueOf(i));
+
+ adminNode.appendChild(localChildNode);
+ }
+ return adminNode;
+ }
+
+ public static TreeNode getRulesStructure () {
+
+ //final TreeNode adminNode = new TreeNode("Rules");
+ return new TreeNode(new TreeNodeConfig() {
+ {
+ setText("Rules");
+ setExpanded(true);
+ }
+ }) {
+ {
+ appendChild(new TreeNode(new TreeNodeConfig() {
+ {
+ setIcon("images/find.gif");
+ setId("FIND");
+ setText("Find");
+
+ }
+ }));
+ appendChild(getStatesStructure());
+ appendChild(getCategoriesStructure());
+ }
+
+ };
+
+ }
+
+ public static TreeNode getCategoriesStructure () {
+ final TreeNode treeNode = new TreeNode("Categories");
+ treeNode.setAttribute("icon", "images/silk/chart_organisation.gif");
+ treeNode.setAttribute("id",CATEGORY_ID);
+ doCategoryNode(treeNode, "/");
+ return treeNode;
+ }
+
+ private static void doCategoryNode(final TreeNode treeNode, final String path) {
+ infanticide(treeNode);
+ RepositoryServiceFactory.getService().loadChildCategories(path,
+ new GenericCallback() {
+ public void onSuccess(Object data) {
+ final String value[] = (String[]) data;
+ if (value.length == 0) {
+ infanticide(treeNode);
+ } else {
+ for (int i = 0; i < value.length; i++) {
+
+ final String current = value[i];
+ System.err.println("VALUE: " + current + "(" + i + ")");
+ final TreeNode childNode = new TreeNode( new TreeNodeConfig() {
+ {
+ setIcon("images/category_small.gif");
+ setText(current);
+ }
+ });
+
+ childNode.setUserObject((path.equals("/")) ? current : path + "/" + current);
+ childNode.appendChild(new TreeNode("Please wait..."));
+ childNode.addTreeNodeListener(new TreeNodeListenerAdapter() {
+
+ boolean expanding = false;
+
+
+ public void onExpand(Node node) {
+
+ if (!expanding) {
+ expanding = true;
+ infanticide(childNode);
+ doCategoryNode(childNode, (String) childNode.getUserObject());
+ childNode.expand();
+ expanding = false;
+ }
+ }
+ });
+
+ treeNode.appendChild(childNode);
+ }
+ }
+ }
+
+
+ });
+ }
+
+ private static void infanticide(final TreeNode treeNode) {
+ for (int i = 0; i < treeNode.getChildNodes().length; i++) {
+ treeNode.removeChild(treeNode.getChildNodes()[i]);
+ }
+ }
+
+ public static TreeNode getStatesStructure () {
+
+ final TreeNode treeNode = new TreeNode("States");
+ treeNode.setAttribute("icon", "images/status_small.gif");
+ treeNode.setAttribute("id",STATES_ID);
+
+
+ RepositoryServiceFactory.getService().listStates(new GenericCallback() {
+ public void onSuccess(Object data) {
+ String value[] = (String[]) data;
+
+
+ for (int i = 0; i < value.length; i++) {
+ TreeNode childNode = new TreeNode(value[i]);
+ childNode.setAttribute("icon", "images/category_small.gif");
+ childNode.setUserObject("-" + value[i]);
+ treeNode.appendChild(childNode);
+ }
+ }
+ });
+
+ return treeNode;
+ }
+
+}
+
+
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerNodeConfig.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerViewCenterPanel.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerViewCenterPanel.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerViewCenterPanel.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,165 @@
+package org.drools.brms.client.explorer;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.brms.client.common.GenericCallback;
+import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.packages.PackageEditor2;
+import org.drools.brms.client.packages.SuggestionCompletionCache;
+import org.drools.brms.client.rpc.PackageConfigData;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+import org.drools.brms.client.rpc.RuleAsset;
+import org.drools.brms.client.ruleeditor.RuleViewer;
+import org.drools.brms.client.rulelist.EditItemEvent;
+import org.drools.brms.client.rulelist.QuickFindWidget;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.Ext;
+import com.gwtext.client.widgets.TabPanel;
+import com.gwtext.client.widgets.TabPanelItem;
+import com.gwtext.client.widgets.event.TabPanelItemListenerAdapter;
+import com.gwtext.client.widgets.event.TabPanelListener;
+import com.gwtext.client.widgets.layout.ContentPanel;
+
+/**
+ * This is the tab panel manager.
+ * @author Fernando Meyer, Michael Neale
+ */
+public class ExplorerViewCenterPanel extends ContentPanel {
+
+ final TabPanel tp = new TabPanel("tab-2");
+ private int index = 0;
+ private HashMap openedTabs = new HashMap();
+
+ public ExplorerViewCenterPanel() {
+
+ super(Ext.generateId());
+
+ tp.setWidth("100%");
+ tp.setHeight("100%");
+
+ tp.autoSizeTabs();
+ tp.setResizeTabs(true);
+
+ add(tp);
+ }
+
+
+ /**
+ * Add a new tab. Should only do this if have checked showIfOpen to avoid dupes being opened.
+ * @param tabname The displayed tab name.
+ * @param closeable If you can close it !
+ * @param widget The contentx.
+ * @param key A key which is unique.
+ */
+ public void addTab (String tabname, boolean closeable, Widget widget, String key) {
+ TabPanelItem localTP = tp.addTab(key, tabname, closeable);
+ SimplePanel sp = new SimplePanel();
+ sp.add(widget);
+
+ localTP.setContent(sp);
+
+
+ localTP.addTabPanelItemListener(new TabPanelItemListenerAdapter() {
+ public void onClose(TabPanelItem tab) {
+ openedTabs.remove(tab.getId());
+ }
+ });
+ tp.activate(tp.getCount()-1);
+ openedTabs.put(key, localTP);
+ }
+
+ /**
+ * Will open if existing. If not it will return false;
+ */
+ public boolean showIfOpen(String key) {
+ if (openedTabs.containsKey(key)) {
+ LoadingPopup.close();
+ TabPanelItem tpi = (TabPanelItem) openedTabs.get(key);
+ tpi.activate();
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+
+ public void close(String key) {
+ tp.removeTab(key);
+ openedTabs.remove(key);
+ }
+
+
+ /**
+ * Open an asset if it is not already open.
+ */
+ public void openAsset(
+ final String uuid) {
+ LoadingPopup.showMessage("Loading asset...");
+ if (!showIfOpen(uuid)) {
+ RepositoryServiceFactory.getService().loadRuleAsset(uuid, new GenericCallback() {
+ public void onSuccess(Object data) {
+ final RuleAsset a = (RuleAsset) data;
+ SuggestionCompletionCache.getInstance().doAction(a.metaData.packageName, new Command() {
+ public void execute() {
+ RuleViewer rv = new RuleViewer(a);
+ addTab(a.metaData.name, true, rv, uuid);
+ rv.setCloseCommand(new Command() {
+ public void execute() {
+ close(uuid);
+ }
+ });
+ LoadingPopup.close();
+ }
+ });
+
+ }
+ });
+ }
+
+ }
+
+
+ /**
+ * Open a package editor if it is not already open.
+ */
+ public void openPackageEditor(final String uuid, final Command refPackageList) {
+
+ if (!showIfOpen(uuid)) {
+ RepositoryServiceFactory.getService().loadPackageConfig(uuid, new GenericCallback() {
+ public void onSuccess(Object data) {
+ PackageConfigData conf = (PackageConfigData) data;
+ PackageEditor2 ed = new PackageEditor2(conf, new Command() {
+ public void execute() {
+ close(uuid);
+ }
+ },refPackageList, new EditItemEvent() {
+ public void open(String uuid) {
+ openAsset(uuid);
+ }
+ });
+ addTab(conf.name, true, ed, conf.uuid);
+ LoadingPopup.close();
+ }
+ });
+ }
+ }
+
+ public void openFind() {
+ if (!showIfOpen("FIND")) {
+ this.addTab("Find", true, new QuickFindWidget(new EditItemEvent() {
+ public void open(String uuid) {
+ openAsset(uuid);
+ }
+ }), "FIND");
+ }
+ }
+
+
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/ExplorerViewCenterPanel.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionInsertFactWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionInsertFactWidget.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionInsertFactWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -136,7 +136,6 @@
protected void showAddFieldPopup(Widget w) {
final FormStylePopup popup = new FormStylePopup("images/newex_wiz.gif", "Add a field");
- popup.setStyleName( "ks-popups-Popup" );
final ListBox box = new ListBox();
box.addItem( "..." );
@@ -157,9 +156,6 @@
}
});
-
-
- popup.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
popup.show();
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -138,7 +138,7 @@
protected void showAddFieldPopup(Widget w) {
final FormStylePopup popup = new FormStylePopup("images/newex_wiz.gif", "Add a field");
- popup.setStyleName( "ks-popups-Popup" );
+
final ListBox box = new ListBox();
box.addItem( "..." );
@@ -161,8 +161,6 @@
});
-
- popup.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
popup.show();
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionValueEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionValueEditor.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionValueEditor.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -175,7 +175,6 @@
});
form.addAttribute("Formula:", widgets(formula, new InfoPopup("Formula", "A formula is used when values are calculated, or a variable is used.")));
- form.setPopupPosition(w.getAbsoluteLeft(), w.getAbsoluteTop());
form.show();
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,13 @@
package org.drools.brms.client.modeldriven.ui;
/*
* 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.
@@ -40,8 +40,8 @@
/**
* This represents a top level CE, like an OR, NOT, EXIST etc...
- * Contains a list of FactPatterns.
- *
+ * Contains a list of FactPatterns.
+ *
* @author Michael Neale
*
*/
@@ -58,7 +58,7 @@
this.completions = completions;
this.pattern = pattern;
this.modeller = modeller;
-
+
this.layout = new DirtyableFlexTable();
this.layout.setStyleName( "model-builderInner-Background" );
@@ -96,7 +96,7 @@
showFactTypeSelector( w );
}
} );
-
+
horiz.add( new Label( HumanReadable.getCEDisplayName( pattern.type ) ) );
horiz.add( edit );
horiz.setStyleName( "modeller-composite-Label" );
@@ -115,7 +115,7 @@
box.addItem( facts[i] );
}
box.setSelectedIndex( 0 );
-
+
final FormStylePopup popup = new FormStylePopup( "images/new_fact.gif",
"New fact pattern..." );
popup.addAttribute( "choose fact type",
@@ -128,17 +128,14 @@
popup.hide();
}
} );
- popup.setStyleName( "ks-popups-Popup" );
- popup.setPopupPosition( w.getAbsoluteLeft() - 400,
- w.getAbsoluteTop() );
popup.show();
}
public boolean isDirty() {
return layout.hasDirty();
}
-
-
+
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -339,7 +339,6 @@
form.addAttribute( "A formula:", widgets( formula, new InfoPopup( "A formula",
"A formula is an expression that calculates and returns a value " + ". That value is used to enforce the constraint." ) ) );
- form.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
form.show();
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -269,7 +269,7 @@
private void showPatternPopupForComposite(Widget w, final CompositeFieldConstraint composite) {
final FormStylePopup popup = new FormStylePopup( "images/newex_wiz.gif",
"Add fields to this constraint" );
- popup.setStyleName( "ks-popups-Popup" );
+
final ListBox box = new ListBox();
box.addItem( "..." );
String[] fields = this.completions.getFieldCompletions( this.pattern.factType );
@@ -313,7 +313,6 @@
horiz.add( infoComp );
popup.addAttribute( "Multiple field constraint", horiz );
- popup.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
popup.show();
}
@@ -324,7 +323,7 @@
private void showPatternPopup(Widget w) {
final FormStylePopup popup = new FormStylePopup( "images/newex_wiz.gif",
"Modify constraints for " + pattern.factType );
- popup.setStyleName( "ks-popups-Popup" );
+
final ListBox box = new ListBox();
box.addItem( "..." );
String[] fields = this.completions.getFieldCompletions( this.pattern.factType );
@@ -386,7 +385,6 @@
doBindingEditor( popup );
- popup.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
popup.show();
}
@@ -552,7 +550,7 @@
}
} );
popup.addAttribute( "Variable name", vn );
- popup.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+
popup.show();
}
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 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -150,10 +150,10 @@
}
});
- pop.setStyleName( "ks-popups-Popup" );
+
pop.addAttribute( "Attribute", list );
- pop.setPopupPosition( w.getAbsoluteLeft() - 400, w.getAbsoluteTop() );
+
pop.show();
}
@@ -242,7 +242,6 @@
}
}
});
- popup.setStyleName( "ks-popups-Popup" );
//
// The list of top level CEs
@@ -288,8 +287,6 @@
});
popup.addAttribute( "DSL sentence", dsls );
}
-
- popup.setPopupPosition( w.getAbsoluteLeft() - 400, w.getAbsoluteTop() );
popup.show();
}
@@ -303,7 +300,6 @@
protected void showActionSelector(Widget w) {
final FormStylePopup popup = new FormStylePopup("images/new_fact.gif", "Add a new action...");
- popup.setStyleName( "ks-popups-Popup" );
//
// First load up the stuff to do with bound variables or globals
@@ -434,9 +430,6 @@
});
popup.addAttribute( "DSL sentence", dsls );
}
-
-
- popup.setPopupPosition( Window.getClientWidth()/3, Window.getClientHeight()/3 );
popup.show();
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/NewPackageWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/NewPackageWizard.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/NewPackageWizard.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -122,7 +122,6 @@
newPackageLayout.addAttribute( "", create );
- setStyleName( "ks-popups-Popup" );
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageBuilderWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageBuilderWidget.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageBuilderWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -137,7 +137,7 @@
*/
public static void showSource(final String content, String name) {
FormStylePopup pop = new FormStylePopup("images/view_source.gif",
- "Viewing source for: " + name);
+ "Viewing source for: " + name, null, new Integer(600), Boolean.FALSE);
final TextArea area = new TextArea();
area.setVisibleLines(30);
area.setWidth("100%");
@@ -145,8 +145,7 @@
pop.addRow(area);
area.setText(content);
area.setEnabled(true);
- area
- .setTitle("THIS IS READ ONLY - you may copy and paste, but not edit.");
+ area.setTitle("THIS IS READ ONLY - you may copy and paste, but not edit.");
area.addKeyboardListener(new KeyboardListener() {
@@ -165,8 +164,7 @@
});
LoadingPopup.close();
- pop.setPopupPosition((DirtyableComposite.getWidth() - pop
- .getOffsetWidth()) / 2, 100);
+
pop.show();
}
@@ -399,11 +397,6 @@
});
}
});
-
- form.setWidth("50%");
-
- form.setPopupPosition((DirtyableComposite.getWidth() - form
- .getOffsetWidth()) / 2, 100);
form.show();
// form.setPopupPosition( Window.getClientWidth() / 3,
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -44,6 +44,20 @@
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.data.SimpleStore;
+import com.gwtext.client.widgets.form.ContainerConfig;
+import com.gwtext.client.widgets.form.Field;
+import com.gwtext.client.widgets.form.Form;
+import com.gwtext.client.widgets.form.FormConfig;
+import com.gwtext.client.widgets.form.TextField;
+import com.gwtext.client.widgets.form.TextFieldConfig;
+import com.gwtext.client.widgets.form.event.FieldListener;
+import com.gwtext.client.widgets.form.event.FormListener;
+import com.gwtext.client.widgets.grid.ColumnConfig;
+import com.gwtext.client.widgets.grid.ColumnModel;
+import com.gwtext.client.widgets.grid.Grid;
+import com.gwtext.client.widgets.grid.event.GridRowListener;
/**
* This is the package editor and viewer for package configuration.
@@ -133,7 +147,6 @@
show.addClickListener( new ClickListener() {
public void onClick(Widget w) {
ValidationMessageWidget wid = new ValidationMessageWidget(previousResponse.errorHeader, previousResponse.errorMessage);
- wid.setPopupPosition( Window.getClientWidth()/4, w.getAbsoluteTop() );
wid.show();
}
} );
@@ -231,8 +244,6 @@
}
} );
- pop.setWidth( "40%" );
- pop.setPopupPosition( Window.getClientWidth() / 3, Window.getClientHeight() / 3 );
pop.show();
}
@@ -251,10 +262,10 @@
ok.addClickListener( new ClickListener() {
public void onClick(Widget w) {
- if (!PackageNameValidator.validatePackageName(name.getText())) {
- Window.alert("Not a valid package name.");
- return;
- }
+ if (!PackageNameValidator.validatePackageName(name.getText())) {
+ Window.alert("Not a valid package name.");
+ return;
+ }
RepositoryServiceFactory.getService().copyPackage( conf.name, name.getText(), new GenericCallback() {
public void onSuccess(Object data) {
refreshCommand.execute();
@@ -265,8 +276,6 @@
}
} );
- pop.setWidth( "40%" );
- pop.setPopupPosition( Window.getClientWidth() / 3, Window.getClientHeight() / 3 );
pop.show();
}
@@ -394,7 +403,6 @@
newFactTemplate.addClickListener( new ClickListener() {
public void onClick(Widget w) {
final FactTemplateWizard wiz = new FactTemplateWizard();
- wiz.setPopupPosition( w.getAbsoluteLeft() - 400, w.getAbsoluteTop() - 250 );
wiz.setOKClick( new Command() {
public void execute() {
area.setText( area.getText() + "\n" +
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor2.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor2.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor2.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,474 @@
+package org.drools.brms.client.packages;
+/*
+ * 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 java.util.Date;
+
+import org.drools.brms.client.common.FormStylePopup;
+import org.drools.brms.client.common.GenericCallback;
+import org.drools.brms.client.common.ImageButton;
+import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.common.PrettyFormLayout;
+import org.drools.brms.client.common.StatusChangePopup;
+import org.drools.brms.client.common.ValidationMessageWidget;
+import org.drools.brms.client.rpc.PackageConfigData;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+import org.drools.brms.client.rpc.ValidatedResponse;
+import org.drools.brms.client.rulelist.EditItemEvent;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * This is the package editor and viewer for package configuration.
+ *
+ * @author Michael Neale
+ */
+public class PackageEditor2 extends PrettyFormLayout {
+
+
+
+ private PackageConfigData conf;
+ private HTML status;
+ protected ValidatedResponse previousResponse;
+ private Command close;
+ private Command refreshPackageList;
+ private EditItemEvent editEvent;
+
+ public PackageEditor2(PackageConfigData data, Command close, Command refreshPackageList, EditItemEvent editEvent) {
+ this.conf = data;
+ this.close = close;
+ this.refreshPackageList = refreshPackageList;
+ this.editEvent = editEvent;
+
+ //setStyleName( "package-Editor" );
+ setWidth( "100%" );
+ refreshWidgets();
+ }
+
+ private void refreshWidgets() {
+ clear();
+
+ startSection("Package name: [" + conf.name + "]");
+
+
+ FlexTable headerWidgets = new FlexTable();
+ headerWidgets.setWidget(0, 0, new HTML("<b>Package name:</b>"));
+ headerWidgets.setWidget(0, 1, new Label(this.conf.name));
+ if (!conf.isSnapshot) {
+
+ //headerWidgets.setWidget(1, 1, modifyWidgets() );
+ addAttribute("Modify:", modifyWidgets());
+ }
+
+ endSection();
+
+ //addHeader( "images/package_large.png", headerWidgets );
+
+ startSection("Configuration");
+
+ addRow( warnings() );
+ addAttribute( "Configuration:", header() );
+ addAttribute( "Description:", description() );
+ if (!conf.isSnapshot) {
+ Button save = new Button("Save and validate configuration");
+ save.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ doSaveAction(null);
+ }
+ } );
+ addAttribute("", save);
+ }
+
+ endSection();
+
+ startSection("Build and validate");
+
+ addRow(new PackageBuilderWidget(this.conf, editEvent));
+
+ endSection();
+
+ startSection("Information");
+
+ addAttribute( "Last modified:", new Label(getDateString(conf.lastModified)) );
+ addAttribute( "Last contributor:", new Label(this.conf.lasContributor));
+ addAttribute( "Date created:", new Label(getDateString(this.conf.dateCreated)));
+
+ status = new HTML();
+ HorizontalPanel statusBar = new HorizontalPanel();
+ Image editState = new ImageButton("images/edit.gif");
+ editState.setTitle( "Change status." );
+ editState.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ showStatusChanger(w);
+ }
+
+ } );
+ statusBar.add( status );
+
+ if (!this.conf.isSnapshot) {
+ statusBar.add( editState );
+ }
+
+ setState(conf.state);
+ addAttribute("Status:", statusBar);
+
+
+
+ endSection();
+
+ }
+
+
+
+ private String getDateString(Date d) {
+ if (d != null)
+ return d.toLocaleString();
+ else
+ return "";
+ }
+
+
+
+
+
+
+
+
+ private Widget warnings() {
+ if (this.previousResponse != null && this.previousResponse.hasErrors) {
+ Image img = new Image("images/warning.gif");
+ HorizontalPanel h = new HorizontalPanel();
+ h.add( img );
+ HTML msg = new HTML("<b>There were errors validating this package configuration.");
+ h.add( msg );
+ Button show = new Button("View errors");
+ show.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ ValidationMessageWidget wid = new ValidationMessageWidget(previousResponse.errorHeader, previousResponse.errorMessage);
+ wid.show();
+ }
+ } );
+ h.add( show );
+ return h;
+ } else {
+ return new SimplePanel();
+ }
+ }
+
+ protected void showStatusChanger(Widget w) {
+ final StatusChangePopup pop = new StatusChangePopup(conf.uuid, true);
+ pop.setChangeStatusEvent(new Command() {
+ public void execute() {
+ setState( pop.getState() );
+ }
+ });
+ pop.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+ pop.show();
+
+ }
+
+ private void setState(String state) {
+ status.setHTML( "<b>" + state + "</b>" );
+ }
+
+ /**
+ * This will get the save widgets.
+ */
+ private Widget modifyWidgets() {
+
+ HorizontalPanel horiz = new HorizontalPanel();
+
+ Button copy = new Button("Copy");
+ copy.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ showCopyDialog();
+ }
+ } );
+ horiz.add( copy );
+
+ Button rename = new Button("Rename");
+ rename.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ showRenameDialog();
+ }
+ } );
+ horiz.add( rename );
+
+
+ Button archive = new Button("Archive");
+ archive.addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ if ( Window.confirm( "Are you sure you want to archive (remove) this package?" ) ) {
+ conf.archived = true;
+ doSaveAction(close);
+ }
+ }
+ });
+ horiz.add(archive);
+
+ return horiz;
+ }
+
+
+
+ private void showRenameDialog() {
+ final FormStylePopup pop = new FormStylePopup("images/new_wiz.gif", "Rename the package");
+ pop.addRow( new HTML("<i>Rename the package. A new unique name is required.</i>") );
+ final TextBox name = new TextBox();
+ pop.addAttribute( "New package name:", name );
+ Button ok = new Button("OK");
+ pop.addAttribute( "", ok );
+
+ ok.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ RepositoryServiceFactory.getService().renamePackage( conf.uuid, name.getText(), new GenericCallback() {
+ public void onSuccess(Object data) {
+ refreshPackageList.execute();
+ Window.alert( "Package renamed successfully." );
+ pop.hide();
+ }
+ });
+ }
+ } );
+
+ pop.show();
+ }
+
+
+
+ /**
+ * Will show a copy dialog for copying the whole package.
+ */
+ private void showCopyDialog() {
+ final FormStylePopup pop = new FormStylePopup("images/new_wiz.gif", "Copy the package");
+ pop.addRow( new HTML("<i>Copy the package and all its assets. A new unique name is required.</i>") );
+ final TextBox name = new TextBox();
+ pop.addAttribute( "New package name:", name );
+ Button ok = new Button("OK");
+ pop.addAttribute( "", ok );
+
+ ok.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ if (!PackageNameValidator.validatePackageName(name.getText())) {
+ Window.alert("Not a valid package name.");
+ return;
+ }
+ RepositoryServiceFactory.getService().copyPackage( conf.name, name.getText(), new GenericCallback() {
+ public void onSuccess(Object data) {
+ refreshPackageList.execute();
+ Window.alert( "Package copied successfully." );
+ pop.hide();
+ }
+ });
+ }
+ } );
+
+ pop.show();
+
+ }
+
+ protected void doCopyPackage(String name) {
+
+ }
+
+ private void doSaveAction(final Command refresh) {
+ LoadingPopup.showMessage( "Saving package configuration. Please wait ..." );
+ RepositoryServiceFactory.getService().savePackage( this.conf, new GenericCallback() {
+ public void onSuccess(Object data) {
+
+ previousResponse = (ValidatedResponse) data;
+
+ reload();
+ LoadingPopup.showMessage( "Package configuration updated successfully, refreshing content cache..." );
+
+ SuggestionCompletionCache.getInstance().refreshPackage( conf.name, new Command() {
+ public void execute() {
+ if (refresh != null) {
+ refresh.execute();
+ }
+ LoadingPopup.close();
+ }
+ });
+
+
+
+
+ }
+ });
+
+ }
+
+
+
+ /**
+ * Will refresh all the data.
+ */
+ private void reload() {
+ LoadingPopup.showMessage( "Refreshing package data..." );
+ RepositoryServiceFactory.getService().loadPackageConfig( this.conf.uuid, new GenericCallback() {
+ public void onSuccess(Object data) {
+ LoadingPopup.close();
+ conf = (PackageConfigData) data;
+ refreshWidgets();
+ }
+ });
+ }
+
+ private Widget externalURI() {
+ final TextBox box = new TextBox();
+ box.setWidth( "100%" );
+ box.setText( this.conf.externalURI );
+ box.addChangeListener( new ChangeListener() {
+ public void onChange(Widget w) {
+ conf.externalURI = box.getText();
+ }
+ });
+ return box;
+ }
+
+ private Widget header() {
+
+ return new PackageHeaderWidget(this.conf);
+
+// final TextArea area = new TextArea();
+// area.setWidth( "100%" );
+// area.setVisibleLines( 8 );
+//
+// area.setCharacterWidth( 100 );
+//
+// area.setText( this.conf.header );
+// area.addChangeListener( new ChangeListener() {
+// public void onChange(Widget w) {
+// conf.header = area.getText();
+// }
+// });
+//
+//
+//
+// HorizontalPanel panel = new HorizontalPanel();
+// panel.add( area );
+//
+// VerticalPanel vert = new VerticalPanel();
+//
+// Image max = new Image("images/max_min.gif");
+// max.addClickListener( new ClickListener() {
+// public void onClick(Widget w) {
+// if (area.getVisibleLines() != 32) {
+// area.setVisibleLines( 32 );
+// } else {
+// area.setVisibleLines( 8 );
+// }
+// }
+// } );
+// max.setTitle( "Increase view area." );
+// vert.add( max );
+//
+// Image newImport = new Image("images/new_import.gif");
+// newImport.addClickListener( new ClickListener() {
+// public void onClick(Widget w) {
+// area.setText( area.getText( ) + "\n" +
+// "import <your class here>");
+// conf.header = area.getText();
+// }
+// });
+// vert.add( newImport );
+// newImport.setTitle( "Add a new Type/Class import to the package." );
+//
+// Image newGlobal = new Image("images/new_global.gif");
+// newGlobal.addClickListener( new ClickListener() {
+// public void onClick(Widget w) {
+// area.setText( area.getText() + "\n" +
+// "global <your class here> <variable name>");
+// conf.header = area.getText();
+// }
+// });
+// newGlobal.setTitle( "Add a new global variable declaration." );
+// vert.add( newGlobal );
+//
+// Image newFactTemplate = new Image("images/fact_template.gif");
+// newFactTemplate.addClickListener( new ClickListener() {
+// public void onClick(Widget w) {
+// final FactTemplateWizard wiz = new FactTemplateWizard();
+// wiz.setOKClick( new Command() {
+// public void execute() {
+// area.setText( area.getText() + "\n" +
+// wiz.getTemplateText() );
+// conf.header = area.getText();
+//
+// }
+// } );
+// wiz.show();
+// }
+// });
+// newFactTemplate.setTitle( "Add a new fact template." );
+// //vert.add( newFactTemplate );
+//
+// panel.setWidth( "100%" );
+//
+// panel.add( vert );
+// return panel;
+ }
+
+
+// private HorizontalPanel expandableTextArea(final TextArea area) {
+// HorizontalPanel panel = new HorizontalPanel();
+// panel.add( area );
+//
+// Image max = new Image("images/max_min.gif");
+// max.setTitle( "Increase view area" );
+//
+// panel.add( max );
+// max.addClickListener( new ClickListener() {
+// public void onClick(Widget w) {
+// if (area.getVisibleLines() != 32) {
+// area.setVisibleLines( 32 );
+// } else {
+// area.setVisibleLines( 8 );
+// }
+// }
+// } );
+// return panel;
+// }
+
+ private Widget description() {
+
+ final TextBox box = new TextBox();
+ box.setText(conf.description);
+ box.addChangeListener(new ChangeListener() {
+ public void onChange(Widget arg0) {
+ conf.description = box.getText();
+ }
+ });
+ box.setVisibleLength(64);
+
+ return box;
+ }
+
+}
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor2.java
___________________________________________________________________
Name: svn:eol-style
+ native
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 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -212,8 +212,6 @@
"Create a new rule asset",
currentlySelectedPackage );
- pop.setPopupPosition( (DirtyableComposite.getWidth() - pop.getOffsetWidth()) / 2,
- 100 );
pop.show();
}
@@ -324,8 +322,6 @@
refreshTreeView();
}
} );
- pop.setPopupPosition( (DirtyableComposite.getWidth() - pop.getOffsetWidth()) / 2,
- 100 );
pop.show();
}
@@ -569,8 +565,6 @@
title,
currentlySelectedPackage );
- pop.setPopupPosition( (DirtyableComposite.getWidth() - pop.getOffsetWidth()) / 3,
- 100 );
pop.show();
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageHeaderWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageHeaderWidget.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageHeaderWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,345 @@
+package org.drools.brms.client.packages;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.drools.brms.client.common.FormStylePopup;
+import org.drools.brms.client.common.GenericCallback;
+import org.drools.brms.client.common.ImageButton;
+import org.drools.brms.client.common.InfoPopup;
+import org.drools.brms.client.rpc.PackageConfigData;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.Button;
+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.HTML;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.TextArea;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * This is for managing imports etc.
+ * @author Michael Neale
+ */
+public class PackageHeaderWidget extends Composite {
+
+
+ private PackageConfigData conf;
+ private SimplePanel layout;
+ private ListBox importList;
+ private ListBox globalList;
+
+
+ public PackageHeaderWidget(PackageConfigData conf) {
+ this.conf = conf;
+ layout = new SimplePanel();
+ render();
+
+
+ initWidget(layout);
+ }
+
+
+ private void render() {
+
+ final Types t = parseHeader(conf.header);
+ if (t == null) {
+ textEditorVersion();
+ } else {
+ layout.clear();
+ HorizontalPanel main = new HorizontalPanel();
+
+ VerticalPanel imports = new VerticalPanel();
+ imports.add(new Label("Imported types:"));
+ importList = new ListBox(true);
+
+ doImports(t);
+ HorizontalPanel importCols = new HorizontalPanel();
+ importCols.add(importList);
+ VerticalPanel importActions = new VerticalPanel();
+ importActions.add(new ImageButton("images/new_item.gif") {
+ {
+ addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ showTypeQuestion(w, t, false, "Fact types are classes from 'jar' files that have been uploaded to the current package.");
+ }
+ });
+ }
+ });
+ importActions.add(new ImageButton("images/trash.gif") {
+ {
+ addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ if (Window.confirm("Are you sure you want to remove this fact type?")) {
+ int i = importList.getSelectedIndex();
+ importList.removeItem(i);
+ t.imports.remove(i);
+ updateHeader(t);
+ }
+ }
+ });
+ }
+ });
+
+ importCols.add(importActions);
+ imports.add(importCols);
+
+
+ VerticalPanel globals = new VerticalPanel();
+ globals.add(new Label("Globals:"));
+ globalList = new ListBox(true);
+ doGlobals(t);
+ HorizontalPanel globalCols = new HorizontalPanel();
+ globalCols.add(globalList);
+ VerticalPanel globalActions = new VerticalPanel();
+ globalActions.add(new ImageButton("images/new_item.gif") {
+ {
+ addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ showTypeQuestion(w, t, true, "Global types are classes from 'jar' files that have been uploaded to the current package.");
+ }
+ });
+ }
+ });
+ globalActions.add(new ImageButton("images/trash.gif") {
+ {
+ addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ if (Window.confirm("Are you sure you want to remove this global?")) {
+ int i = globalList.getSelectedIndex();
+ globalList.removeItem(i);
+ t.globals.remove(i);
+ updateHeader(t);
+ }
+ }
+ });
+ }
+ });
+ globalCols.add(globalActions);
+ globals.add(globalCols);
+
+ main.add(imports);
+ main.add(globals);
+
+ Button advanced = new Button() {
+ {
+ setText("Advanced view");
+ setTitle("Switch to text mode editing.");
+ addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ if (Window.confirm("Switch to advanced text mode for package editing?")) {
+ textEditorVersion();
+ }
+ }
+ });
+ }
+ };
+ main.add(advanced);
+
+
+ layout.add(main);
+
+ }
+ }
+
+
+ private void textEditorVersion() {
+ layout.clear();
+ final TextArea area = new TextArea();
+ area.setWidth( "100%" );
+ area.setVisibleLines( 8 );
+
+ area.setCharacterWidth( 100 );
+
+ area.setText( this.conf.header );
+ area.addChangeListener( new ChangeListener() {
+ public void onChange(Widget w) {
+ conf.header = area.getText();
+ }
+ });
+ layout.add(area);
+ }
+
+ private void showTypeQuestion(Widget w, final Types t, final boolean global, String headerMessage) {
+
+ final FormStylePopup pop = new FormStylePopup("images/home_icon.gif", "Choose a fact type");
+ pop.addRow(new HTML("<small><i>" + headerMessage +
+ " </i></small>"));
+ final ListBox factList = new ListBox();
+ factList.addItem("loading list ....");
+
+ RepositoryServiceFactory.getService().listTypesInPackage(this.conf.uuid, new GenericCallback() {
+ public void onSuccess(Object data) {
+ factList.clear();
+ String[] list = (String[]) data;
+ for (int i = 0; i < list.length; i++) {
+ factList.addItem(list[i]);
+ }
+ }
+ });
+
+ InfoPopup info = new InfoPopup("Types in the package", "If no types appear in the list, create a model asset, and upload a jar file to it for this package. " +
+ "The jar file should contain the .class files for the types needed by the rules only.");
+ HorizontalPanel h = new HorizontalPanel();
+ h.add(factList);
+ h.add(info);
+ pop.addAttribute("Choose class type:", h);
+ final TextBox globalName = new TextBox();
+ if (global) {
+ pop.addAttribute("Global name:", globalName);
+ }
+ final TextBox className = new TextBox();
+ InfoPopup infoClass = new InfoPopup("Entering a type class name", "You should only need to do this if a fact class is on the BRMS classpath itself. Otherwise it should be in the list above.");
+ h = new HorizontalPanel();
+ h.add(className);
+ h.add(infoClass);
+ pop.addAttribute("(advanced) class name:", h);
+
+ Button ok = new Button("OK") {
+ {
+ addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ String type = (!"".equals(className.getText())) ? className.getText() : factList.getItemText(factList.getSelectedIndex());
+ if (!global) {
+ t.imports.add(new Import(type));
+ doImports(t);
+ } else {
+ if ("".equals(globalName.getText())) {
+ Window.alert("You must enter a global variable name.");
+ return;
+ }
+ t.globals.add(new Global(type, globalName.getText()));
+ doGlobals(t);
+ }
+ updateHeader(t);
+ pop.hide();
+ }
+ });
+ }
+ };
+ pop.addAttribute("", ok);
+
+ pop.show();
+
+
+
+ }
+
+
+
+ private void updateHeader(Types t) {
+ this.conf.header = renderTypes(t);
+ }
+
+ private void doGlobals(Types t) {
+ globalList.clear();
+ for (Iterator it = t.globals.iterator(); it.hasNext();) {
+ Global g = (Global) it.next();
+ globalList.addItem(g.type + " [" + g.name + "]");
+ }
+ }
+
+
+ private void doImports(Types t) {
+ importList.clear();
+ for (Iterator it = t.imports.iterator(); it.hasNext();) {
+ Import i = (Import) it.next();
+ importList.addItem(i.type);
+ }
+ }
+
+
+ /**
+ * Attempt to parse out a model, if it can't, it will return null in which case an "advanced" editor should be used.
+ */
+ static Types parseHeader(String header) {
+ if (header == null || header.equals("")) {
+ Types t = new Types();
+ return t;
+ } else {
+ Types t = new Types();
+
+ String[] lines = header.split("\\n");
+
+ for (int i = 0; i < lines.length; i++) {
+ String tk = lines[i].trim();
+ if (!tk.equals("") && !tk.startsWith("#")) {
+ if (tk.startsWith("import")) {
+ tk = tk.substring(6).trim();
+ if (tk.endsWith(";")) {
+ tk = tk.substring(0, tk.length() - 1);
+ }
+ t.imports.add(new Import(tk));
+ } else if (tk.startsWith("global")) {
+ tk = tk.substring(6).trim();
+ if (tk.endsWith(";")) {
+ tk = tk.substring(0, tk.length() - 1);
+ }
+ String[] gt = tk.split("\\s+");
+ t.globals.add(new Global(gt[0], gt[1]));
+ } else {
+ return null;
+ }
+ }
+ }
+
+ return t;
+
+ }
+
+ }
+
+
+
+
+ static String renderTypes(Types t) {
+ StringBuffer sb = new StringBuffer();
+ for (Iterator iterator = t.imports.iterator(); iterator.hasNext();) {
+ Import i = (Import) iterator.next();
+ sb.append("import " + i.type + "\n");
+ }
+
+ for (Iterator it = t.globals.iterator(); it.hasNext();) {
+ Global g = (Global) it.next();
+ sb.append("global " + g.type + " " + g.name);
+ }
+ return sb.toString();
+ }
+
+ static class Types {
+ List imports = new ArrayList();
+ List globals = new ArrayList();
+ }
+
+ static class Import {
+ String type;
+
+ Import(String t) {
+ this.type = t;
+ }
+ }
+
+ static class Global {
+ String type;
+ String name;
+
+ Global(String type, String name) {
+ this.type = type;
+ this.name = name;
+ }
+ }
+
+}
+
+
+
+
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageHeaderWidget.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageManagerView.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageManagerView.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageManagerView.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,13 @@
package org.drools.brms.client.packages;
/*
* 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.
@@ -18,7 +18,6 @@
import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
import org.drools.brms.client.ruleeditor.EditorLauncher;
@@ -29,13 +28,13 @@
/**
* This view is a tabbed browser for package management.
- * The first tab always shows the list of packages in tree form,
+ * The first tab always shows the list of packages in tree form,
* with a list/explorer like motif.
- *
+ *
* This can also be specified to only show one package (ie when viewing a snapshot).
- *
+ *
* Each editor that is opened is opened in a new tab.
- *
+ *
* @author Michael Neale
*/
public class PackageManagerView extends Composite {
@@ -59,28 +58,28 @@
tab = new TabPanel();
tab.setWidth("100%");
tab.setHeight("30%");
-
+
EditItemEvent editEvent = new EditItemEvent() {
public void open(String key) {
EditorLauncher.showLoadEditor( openedViewers, tab, key, (snapshotName != null) );
}
};
PackageExplorerWidget explorer = null;
-
+
if (packageUUID == null) {
- explorer = new PackageExplorerWidget(editEvent);
+ explorer = new PackageExplorerWidget(editEvent);
} else {
explorer = new PackageExplorerWidget(editEvent, packageUUID, snapshotName);
}
-
- tab.add( explorer, "<img src='images/explore.gif'/>Explore", true);
+
+ tab.add( explorer, "<img src='images/explore.gif'/>Explore", true);
tab.selectTab( 0 );
-
+
initWidget( tab );
}
public void setOpenedViewersContainer(Map openedViewers) {
this.openedViewers = openedViewers;
}
-
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageSnapshotView.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageSnapshotView.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageSnapshotView.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -240,7 +240,7 @@
Button btn = new Button("Copy");
btn.addClickListener( new ClickListener() {
public void onClick(Widget w) {
- copy.setPopupPosition((DirtyableComposite.getWidth() - copy.getOffsetWidth()) / 2, 100);
+
copy.show();
}
});
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/qa/QAManagerWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/qa/QAManagerWidget.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/qa/QAManagerWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -195,8 +195,7 @@
}
}, false, format, title, currentlySelectedPackage);
- pop.setPopupPosition((DirtyableComposite.getWidth() - pop
- .getOffsetWidth()) / 3, 100);
+
pop.show();
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/qa/ScenarioWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/qa/ScenarioWidget.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/qa/ScenarioWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -236,7 +236,6 @@
insertFact.add(factTypes); insertFact.add(new Label("Fact name:")); insertFact.add(factName); insertFact.add(add);
pop.addAttribute("New global:", insertFact);
- pop.setPopupPosition(Window.getClientWidth()/3, w.getAbsoluteTop() );
pop.show();
}
});
@@ -324,10 +323,6 @@
}
-
-
-
- pop.setPopupPosition(Window.getClientWidth()/3, w.getAbsoluteTop() );
pop.show();
}
@@ -379,7 +374,6 @@
h.add(ok);
pop.addAttribute("Fact value:", h);
- pop.setPopupPosition(Window.getClientWidth()/3, w.getAbsoluteTop() );
pop.show();
}
});
@@ -651,7 +645,7 @@
}
});
pop.addRow(ok);
- pop.setPopupPosition(w.getAbsoluteLeft(), w.getAbsoluteTop());
+
pop.show();
}
};
@@ -906,7 +900,6 @@
pop.addRow(ruleSelector);
- pop.setPopupPosition(w.getAbsoluteLeft(), w.getAbsoluteTop());
pop.show();
}
@@ -1040,7 +1033,6 @@
}
});
pop.addRow(ok);
- pop.setPopupPosition(w.getAbsoluteLeft(), w.getAbsoluteTop());
pop.show();
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -39,9 +39,16 @@
* Return a a 2d array/grid of results for rules.
* @param A "/" delimited path to a category.
*/
- public TableDataResult loadRuleListForCategories(String categoryPath) throws SerializableException;
+ public TableDataResult loadRuleListForCategories(String categoryPath, int skip, int numRows) throws SerializableException;
/**
+ * Return a a 2d array/grid of results for rules.
+ * @param The name of the state.
+ */
+ public TableDataResult loadRuleListForState(String state, int skip, int numRows) throws SerializableException;
+
+
+ /**
* This will return a TableConfig of header names.
* @param listName The name of the list that we are going to render.
*/
@@ -147,7 +154,7 @@
* @param numRows The number of rows to return. -1 means all.
* @param startRow The starting row number if paging - if numRows is -1 then this is ignored.
*/
- public TableDataResult listAssets(String packageUUID, String formats[], int numRows, int startRow) throws SerializableException;
+ public TableDataResult listAssets(String packageUUID, String formats[], int skip, int numRows) throws SerializableException;
/**
* Returns a list of valid states.
@@ -338,4 +345,11 @@
*/
public AnalysisReport analysePackage(String packageUUID) throws SerializableException;
+
+ /**
+ * List the fact types (class names) in the scope of a given package.
+ * This may not include things on the "system" classpath, but only things specifically scoped to the package
+ * (eg in jars that have been uploaded to it as an asset).
+ */
+ public String[] listTypesInPackage(String packageUUID) throws SerializableException;
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -34,7 +34,8 @@
/** Generated by AsyncInterfaceGenerator hackery */
public void loadChildCategories(java.lang.String p0, AsyncCallback cb);
- public void loadRuleListForCategories(java.lang.String p0, AsyncCallback cb);
+ public void loadRuleListForCategories(java.lang.String p0, int p1, int p2, AsyncCallback cb);
+ public void loadRuleListForState(java.lang.String p0, int p1, int p2, AsyncCallback cb);
public void loadTableConfig(java.lang.String p0, AsyncCallback cb);
public void createCategory(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback cb);
public void createNewRule(java.lang.String p0, java.lang.String p1, java.lang.String p2, java.lang.String p3, java.lang.String p4, AsyncCallback cb);
@@ -76,7 +77,6 @@
public void runScenario(java.lang.String p0, org.drools.brms.client.modeldriven.testing.Scenario p1, AsyncCallback cb);
public void runScenariosInPackage(java.lang.String p0, AsyncCallback cb);
public void analysePackage(java.lang.String p0, AsyncCallback cb);
+ public void listTypesInPackage(java.lang.String p0, AsyncCallback cb);
-
-
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,13 @@
package org.drools.brms.client.rpc;
/*
* 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.
@@ -27,7 +27,9 @@
public class TableDataResult
implements
IsSerializable {
-
+
public TableDataRow[] data;
-
+ public long total;
+ public boolean hasNext;
+
}
\ No newline at end of file
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 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -18,10 +18,8 @@
-import org.drools.brms.client.common.DirtyableComposite;
import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.common.GenericCallback;
-import org.drools.brms.client.common.ImageButton;
import org.drools.brms.client.common.RulePackageSelector;
import org.drools.brms.client.common.StatusChangePopup;
import org.drools.brms.client.rpc.MetaData;
@@ -33,15 +31,17 @@
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.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;
-import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.Ext;
+import com.gwtext.client.widgets.ButtonConfig;
+import com.gwtext.client.widgets.QuickTipsConfig;
+import com.gwtext.client.widgets.Toolbar;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.ToolbarSeparator;
+import com.gwtext.client.widgets.ToolbarTextItem;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
/**
* This contains the widgets used to action a rule asset
@@ -50,21 +50,17 @@
*/
public class ActionToolbar extends Composite {
- private FlexTable layout = new FlexTable();
- private Command closeCommand;
-
+ private Toolbar toolbar;
private MetaData metaData;
private Command checkinAction;
private Command archiveAction;
private Command deleteAction;
private String uuid;
- private HTML state;
+ private ToolbarTextItem state;
public ActionToolbar(final RuleAsset asset,
-
final Command checkin,
final Command archiv,
- final Command minimiseMaximise,
final Command delete, boolean readOnly) {
this.metaData = asset.metaData;
@@ -72,128 +68,141 @@
this.uuid = asset.uuid;
this.archiveAction = archiv;
this.deleteAction = delete;
- this.state = new HTML();
+ this.state = new ToolbarTextItem("Status: ");
+
+
+ toolbar = new Toolbar(Ext.generateId());
+
+
String status = metaData.status;
- FlexCellFormatter formatter = layout.getFlexCellFormatter();
- HorizontalPanel saveControls = new HorizontalPanel();
setState(status);
-
- saveControls.add( state );
-
if (!readOnly) {
- controls(
- formatter,
- saveControls );
-
+ controls();
}
- windowControls( minimiseMaximise, formatter );
+ toolbar.addItem(this.state);
- initWidget( layout );
- setWidth( "100%" );
+ initWidget( toolbar );
}
/**
* Sets the visible status display.
*/
private void setState(String status) {
- state.setHTML( "Status: <b>[" + status + "]</b>");
+ state.setText("Status: [" + status + "]");
}
- private void controls(FlexCellFormatter formatter,
- HorizontalPanel saveControls) {
- Image editState = new ImageButton("images/edit.gif");
- editState.setTitle( "Change status." );
- editState.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- showStatusChanger(w);
- }
+ private void controls() {
- } );
- saveControls.add( editState );
+ toolbar.addButton( new ToolbarButton(new ButtonConfig() {
+ {
+ setText("Save changes");
+ setTooltip(getTip("Commit any changes for this asset."));
+ setButtonListener(new ButtonListenerAdapter() {
+ public void onClick(
+ com.gwtext.client.widgets.Button button,
+ EventObject e) {
+ doCheckinConfirm(button);
+ }
+ });
+ }
+ })
+ );
- layout.setWidget( 0, 0, saveControls );
- formatter.setAlignment( 0, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP );
+ toolbar.addButton( new ToolbarButton(new ButtonConfig() {
+ {
+ setText("Copy");
+ setTooltip("Copy this asset.");
+ setButtonListener(new ButtonListenerAdapter() {
+ public void onClick(
+ com.gwtext.client.widgets.Button button,
+ EventObject e) {
+ doCopyDialog(button);
+ }
+ });
+ }
+ })
+ );
+ toolbar.addButton( new ToolbarButton(new ButtonConfig() {
+ {
+ setText("Archive");
+ setTooltip(getTip("Archive this asset. This will not permanently delete it."));
+ setButtonListener(new ButtonListenerAdapter() {
+ public void onClick(
+ com.gwtext.client.widgets.Button button,
+ EventObject e) {
+ if (Window.confirm( "Are you sure you want to archive this item?" )) {
+ metaData.checkinComment = "Archived Item on " + new java.util.Date().toString();
+ archiveAction.execute();
+ }
+ }
+ });
+ }
+ })
+ );
- //Image save = new Image("images/save_edit.gif");
- Button save = new Button("Save changes");
- save.setTitle( "Check in changes." );
- save.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- doCheckinConfirm(w);
- }
- });
+ if (this.metaData.versionNumber == 0) {
+ toolbar.addButton( new ToolbarButton(new ButtonConfig() {
+ {
+ setText("Delete");
+ setTooltip(getTip("Permanently delete this asset. This will only be shown before the asset is checked in."));
+ setButtonListener(new ButtonListenerAdapter() {
+ public void onClick(
+ com.gwtext.client.widgets.Button button,
+ EventObject e) {
+ if (Window.confirm( "Are you sure you want to permanently delete this (unversioned) item?" ) ) {
+ deleteAction.execute();
+ }
+ }
+ });
+ }
+ })
+ );
+ }
- saveControls.add( save );
- Button copy = new Button("Copy");
- copy.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- doCopyDialog(w);
- }
- } );
+ toolbar.addFill();
- saveControls.add( copy );
+ toolbar.addSeparator();
- Button archive = new Button("Archive");
- archive.addClickListener(new ClickListener() {
- public void onClick(Widget w) {
- if (Window.confirm( "Are you sure you want to archive this item?" )) {
- metaData.checkinComment = "Archived Item on " + new java.util.Date().toString();
- archiveAction.execute();
- }
- }
- });
- saveControls.add(archive);
- if (this.metaData.versionNumber == 0) {
- Button delete = new Button( "Delete" );
- delete.addClickListener( new ClickListener() {
+ toolbar.addButton( new ToolbarButton(new ButtonConfig() {
+ {
+ setText("Change state");
+ setTooltip(getTip("Change the status of this asset."));
+ setButtonListener(new ButtonListenerAdapter() {
+ public void onClick(
+ com.gwtext.client.widgets.Button button,
+ EventObject e) {
+ showStatusChanger(button);
+ }
+ });
+ }
- public void onClick(Widget w) {
- if (Window.confirm( "Are you sure you want to permanently delete this (unversioned) item?" ) ) {
- deleteAction.execute();
- }
- }
- } );
- saveControls.add( delete );
- }
- }
+ })
+ );
- private void windowControls(final Command minimiseMaximise,
- FlexCellFormatter formatter) {
- HorizontalPanel windowControls = new HorizontalPanel();
- Image maxMinImage = new ImageButton("images/max_min.gif");
- maxMinImage.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- minimiseMaximise.execute();
- }
- });
- windowControls.add( maxMinImage );
+ }
- Image closeImg = new ImageButton("images/close.gif");
- closeImg.setTitle( "Close." );
- closeImg.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- closeCommand.execute( );
- }
- });
+ private QuickTipsConfig getTip(final String t) {
+ return new QuickTipsConfig() {
+ {
+ setText(t);
+ }
- windowControls.add( closeImg );
+ };
+ }
- layout.setWidget( 0, 1, windowControls );
- formatter.setAlignment( 0, 1, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_TOP );
- }
protected void doCopyDialog(Widget w) {
final FormStylePopup form = new FormStylePopup("images/rule_asset.gif", "Copy this item");
@@ -222,7 +231,7 @@
} );
form.addAttribute( "", ok );
- form.setPopupPosition((DirtyableComposite.getWidth() - form.getOffsetWidth()) / 2, 100);
+ //form.setPopupPosition((DirtyableComposite.getWidth() - form.getOffsetWidth()) / 2, 100);
form.show();
}
@@ -262,11 +271,6 @@
pop.show();
}
- /**
- * This needs to be set to allow the current viewer to be closed.
- */
- public void setCloseCommand(Command c) {
- this.closeCommand = c;
- }
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/CheckinPopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/CheckinPopup.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/CheckinPopup.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,13 @@
package org.drools.brms.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.
@@ -27,20 +27,20 @@
import com.google.gwt.user.client.ui.Widget;
/**
- *
+ *
* A popup and confirmation dialog for committing an asset.
- *
+ *
* @author Michael Neale
*
*/
public class CheckinPopup {
-
+
private TextArea comment;
private Button save;
private FormStylePopup pop;
-
+
public CheckinPopup(int left, int top, String message) {
pop = new FormStylePopup("images/checkin.gif", message);
comment = new TextArea();
@@ -48,16 +48,12 @@
save = new Button("Save");
pop.addAttribute( "Comment", comment );
pop.addAttribute( "", save);
-
-
- pop.setStyleName( "ks-popups-Popup" );
- pop.setPopupPosition( left, top );
-
+
}
-
+
public void setCommand(final Command checkin) {
save.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
+ public void onClick(Widget w) {
checkin.execute();
pop.hide();
}
@@ -65,12 +61,11 @@
}
public void show() {
- pop.setPopupPosition((DirtyableComposite.getWidth() - pop.getOffsetWidth()) / 2, 100);
pop.show();
}
-
+
public String getCheckinComment() {
return comment.getText();
}
-
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -63,6 +63,7 @@
//depending on the format, load the appropriate editor
if ( asset.metaData.format.equals( AssetFormats.BUSINESS_RULE ) ) {
return new RuleValidatorWrapper( new RuleModeller( asset ), asset);
+ //return new RuleModeller( asset );
} else if ( asset.metaData.format.equals( AssetFormats.DSL_TEMPLATE_RULE ) ) {
return new RuleValidatorWrapper(new DSLRuleEditor( asset ), asset);
} else if ( asset.metaData.format.equals( AssetFormats.MODEL ) ) {
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 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -19,10 +19,10 @@
import java.util.Date;
-import org.drools.brms.client.common.FormStyleLayout;
import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.common.GenericCallback;
import org.drools.brms.client.common.ImageButton;
+import org.drools.brms.client.common.PrettyFormLayout;
import org.drools.brms.client.common.RulePackageSelector;
import org.drools.brms.client.rpc.MetaData;
import org.drools.brms.client.rpc.RepositoryServiceFactory;
@@ -44,7 +44,7 @@
* It also captures edits, but it does not load or save anything itself.
* @author Michael Neale
*/
-public class MetaDataWidget extends FormStyleLayout {
+public class MetaDataWidget extends PrettyFormLayout {
private MetaData data;
@@ -53,9 +53,17 @@
private Command refreshView;
AssetCategoryEditor ed;
- public MetaDataWidget(MetaData d, boolean readOnly, String uuid, Command refreshView) {
+ public MetaDataWidget(final MetaData d, boolean readOnly, String uuid, Command refreshView) {
- setStyleName( "metadata-Widget" );
+ super();
+// layout = new Form(new FormConfig() {
+// {
+// setWidth(250);
+// //setHeader(d.name);
+// setLabelWidth(75);
+// setSurroundWithBox(true);
+// }
+// });
if (!readOnly) {
Image edit = new ImageButton("images/edit.gif", "Rename this asset");
@@ -66,21 +74,31 @@
});
addHeader( "images/meta_data.png", d.name, edit );
} else {
- addHeader( "images/asset_version.png", d.name );
+ addHeader( "images/asset_version.png", d.name, null );
}
+
this.uuid = uuid;
this.data = d;
this.readOnly = readOnly;
this.refreshView = refreshView;
+
loadData(d);
+
+
+
}
- private void loadData(MetaData d) {
+
+
+
+ private void loadData(MetaData d) {
this.data = d;
+ startSection();
addAttribute("Categories:", categories());
- addRow( new HTML("<hr/>") );
+ endSection();
+ startSection();
addAttribute("Modified on:", readOnlyDate(data.lastModifiedDate));
addAttribute("by:", readOnlyText(data.lastContributor));
addAttribute("Note:", readOnlyText( data.checkinComment ));
@@ -92,8 +110,9 @@
addAttribute("Created by:", readOnlyText(data.creator));
addAttribute("Format:", new HTML( "<b>" + data.format + "</b>" ));
+ endSection();
- addRow(new HTML("<hr/>"));
+ startSection();
addAttribute("Package:", packageEditor(data.packageName));
addAttribute("Subject:", editableText(new FieldBinding() {
@@ -139,13 +158,19 @@
}, "A short description or code indicating the source of the rule."));
+ endSection();
+ startSection();
+
if (!readOnly) {
addRow( new VersionBrowser(this.uuid, this.data, refreshView) );
}
+
+ endSection();
}
- private Widget packageEditor(final String packageName) {
+
+ private Widget packageEditor(final String packageName) {
if (this.readOnly) {
return readOnlyText( packageName );
} else {
@@ -181,8 +206,6 @@
}
} );
- pop.setPopupPosition( source.getParent().getParent().getAbsoluteLeft() - 18,
- source.getParent().getParent().getAbsoluteTop() );
pop.show();
}
@@ -206,7 +229,6 @@
"Moved from : " + pkg,
new GenericCallback() {
public void onSuccess(Object data) {
- makeDirty();
refreshView.execute();
pop.hide();
}
@@ -217,8 +239,7 @@
}
});
- pop.setPopupPosition( source.getParent().getParent().getAbsoluteLeft(),
- source.getParent().getParent().getAbsoluteTop() );
+
pop.show();
}
@@ -257,9 +278,9 @@
final TextBox box = new TextBox();
box.setTitle( toolTip );
box.setText( bind.getValue() );
+ box.setVisibleLength(10);
ChangeListener listener = new ChangeListener() {
public void onChange(Widget w) {
- makeDirty();
bind.setValue( box.getText() );
}
};
@@ -284,9 +305,6 @@
}
- public boolean isDirty() {
- return (ed.isDirty() || dirtyflag) ;
- }
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/NewAssetWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/NewAssetWizard.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/NewAssetWizard.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -22,21 +22,15 @@
import org.drools.brms.client.common.AssetFormats;
import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.common.GenericCallback;
-import org.drools.brms.client.common.ImageButton;
import org.drools.brms.client.common.LoadingPopup;
import org.drools.brms.client.common.RulePackageSelector;
import org.drools.brms.client.common.WarningPopup;
-import org.drools.brms.client.packages.NewPackageWizard;
import org.drools.brms.client.rpc.RepositoryServiceFactory;
import org.drools.brms.client.rulelist.EditItemEvent;
-import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.FlexTable;
-import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
@@ -95,8 +89,6 @@
addAttribute( "", ok );
-
- setStyleName( "ks-popups-Popup" );
}
/**
@@ -137,10 +129,10 @@
void ok() {
if (this.showCats && this.initialCategory == null) {
- WarningPopup.showMessage( "You have to pick an initial category.", this.getAbsoluteLeft(), this.getAbsoluteTop() );
+ Window.alert( "You have to pick an initial category." );
return;
} else if (this.name.getText() == null || "".equals( this.name.getText() )) {
- WarningPopup.showMessage( "Asset must have a name", this.getAbsoluteLeft(), this.getAbsoluteTop() );
+ Window.alert( "Asset must have a name" );
return;
}
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 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleDocumentWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,13 @@
package org.drools.brms.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.
@@ -33,45 +33,38 @@
public class RuleDocumentWidget extends DirtyableComposite {
private TextArea text;
-
+
public RuleDocumentWidget(MetaData data) {
-//
+//
// HorizontalPanel horiz = new HorizontalPanel();
-//
-
+//
+
text = new TextArea();
-
-// horiz.add( text );
-// Image max = new Image("images/max_min.gif");
-// max.setTitle( "Show/hide the documentation panel." );
-// max.addClickListener( new ClickListener() {
-// public void onClick(Widget w) {
-// text.setVisible( !text.isVisible() );
-// }
-// });
-// horiz.add( max );
-// horiz.setWidth( "100%" );
+
+
text.setWidth( "100%" );
text.setVisibleLines( 10 );
- text.setStyleName( "rule-viewer-Documentation" );
- text.setTitle( "This is rule documentation. Human friendly descriptions of the business logic.");
+ text.setStyleName( "rule-viewer-Documentation" );
+ text.setTitle( "This is rule documentation. Human friendly descriptions of the business logic.");
initWidget(text);
loadData(data);
}
+
+
private void loadData(final MetaData data) {
text.setText(data.description);
text.addChangeListener( new ChangeListener() {
- public void onChange(Widget w) {
+ public void onChange(Widget w) {
data.description = text.getText();
makeDirty();
- }
+ }
});
if (data.description == null || "".equals(data.description )) {
text.setText( "<documentation>" );
}
}
-
-
-
+
+
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleValidatorWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleValidatorWrapper.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleValidatorWrapper.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -18,7 +18,6 @@
import org.drools.brms.client.common.DirtyableComposite;
-import org.drools.brms.client.common.DirtyableFlexTable;
import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.common.GenericCallback;
import org.drools.brms.client.common.LoadingPopup;
@@ -27,16 +26,18 @@
import org.drools.brms.client.rpc.RepositoryServiceFactory;
import org.drools.brms.client.rpc.RuleAsset;
-import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.ClickListener;
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.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.ScrollPanel;
+import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.Ext;
+import com.gwtext.client.widgets.ButtonConfig;
+import com.gwtext.client.widgets.Toolbar;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
/**
* This widget wraps a rule asset widget, and provides actions to validate and view source.
@@ -45,52 +46,57 @@
public class RuleValidatorWrapper extends DirtyableComposite {
private RuleAsset asset;
- private DirtyableFlexTable layout;
+ private VerticalPanel layout = new VerticalPanel();
+ private Widget editor;
- public boolean isDirty() {
- return layout.hasDirty();
- }
-
public RuleValidatorWrapper(Widget editor, RuleAsset asset) {
this.asset = asset;
+ this.editor = editor;
- layout = new DirtyableFlexTable();
- layout.setStyleName( "asset-editor-Layout" );
- layout.setWidget( 0, 0, editor );
- if (!asset.isreadonly)
- layout.setWidget( 1, 0, validatorActions() );
- layout.getCellFormatter().setAlignment( 1, 0, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_TOP );
+ layout.add(editor);
+ if (!asset.isreadonly) {
+ validatorActions();
+ }
-
layout.setWidth("100%");
layout.setHeight( "100%" );
initWidget( layout );
}
- private Widget validatorActions() {
- HorizontalPanel horiz = new HorizontalPanel();
- Button viewSource = new Button("View source");
- horiz.add( viewSource );
+ private void validatorActions() {
+ Toolbar tb = new Toolbar(Ext.generateId());
+ layout.setCellHeight(editor, "95%");
+ layout.add(tb);
- Button validate = new Button("Validate");
- horiz.add( validate );
+ tb.addButton(new ToolbarButton(new ButtonConfig() {
+ {
+ setText("View source");
+ setButtonListener(new ButtonListenerAdapter() {
+ public void onClick(
+ com.gwtext.client.widgets.Button button,
+ EventObject e) {
+ doViewsource();
+ }
+ });
+ }
+ }));
- viewSource.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- doViewsource();
- }
+ tb.addSeparator();
- });
+ tb.addButton(new ToolbarButton(new ButtonConfig() {
+ {
+ setText("Validate");
+ setButtonListener(new ButtonListenerAdapter() {
+ public void onClick(
+ com.gwtext.client.widgets.Button button,
+ EventObject e) {
+ doValidate();
+ }
+ });
+ }
+ }));
- validate.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- doValidate();
- }
- });
-
- horiz.setStyleName( "asset-validator-Buttons" );
- return horiz;
}
private void doValidate() {
@@ -153,7 +159,6 @@
// pop.setHeight( "50%" );
}
- pop.setPopupPosition( 100, 100 );
pop.show();
LoadingPopup.close();
}
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 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -19,7 +19,6 @@
import org.drools.brms.client.common.AssetFormats;
import org.drools.brms.client.common.DirtyableComposite;
-import org.drools.brms.client.common.DirtyableFlexTable;
import org.drools.brms.client.common.ErrorPopup;
import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.common.GenericCallback;
@@ -29,16 +28,18 @@
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.DisclosurePanel;
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.HorizontalPanel;
+import com.google.gwt.user.client.ui.HorizontalSplitPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.VerticalSplitPanel;
import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
/**
* The main layout parent/controller the rule viewer.
@@ -49,7 +50,6 @@
private Command closeCommand;
protected RuleAsset asset;
- private final DirtyableFlexTable layout;
private boolean readOnly;
@@ -58,6 +58,7 @@
private Widget editor;
private ActionToolbar toolbar;
+ private VerticalPanel layout;
public RuleViewer(RuleAsset asset) {
@@ -73,25 +74,29 @@
public RuleViewer(RuleAsset asset, boolean historicalReadOnly) {
this.asset = asset;
this.readOnly = historicalReadOnly;
- layout = new DirtyableFlexTable();
+ this.layout = new VerticalPanel();
+
+ layout.setWidth("100%");
+ layout.setHeight("100%");
+
+ initWidget( layout );
+
doWidgets();
- initWidget( this.layout );
LoadingPopup.close();
}
- /**
- * This will actually load up the data (this is called by the callback
+
+
+ /**
+ * This will actually load up the data (this is called by the callback)
* when we get the data back from the server,
* also determines what widgets to load up).
*/
private void doWidgets() {
- this.layout.clear();
+ layout.clear();
- FlexCellFormatter formatter = layout.getFlexCellFormatter();
-
-
//the action widgets (checkin/close etc).
toolbar = new ActionToolbar( asset,
new Command() {
@@ -104,23 +109,20 @@
doArchive();
}
},
+
new Command() {
public void execute() {
- zoomIntoAsset();
- }
- },
- new Command() {
- public void execute() {
doDelete();
}
},
readOnly);
+ //layout.add(toolbar, DockPanel.NORTH);
+ layout.add(toolbar);
+ layout.setCellHeight(toolbar, "30px");
+ layout.setCellHorizontalAlignment(toolbar, HasHorizontalAlignment.ALIGN_LEFT);
+ layout.setCellWidth(toolbar, "100%");
- layout.setWidget( 0, 0, toolbar );
- formatter.setAlignment( 0, 0, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_TOP );
-
-
metaWidget = new MetaDataWidget( this.asset.metaData, readOnly, this.asset.uuid, new Command() {
public void execute() {
refreshDataAndView();
@@ -128,40 +130,47 @@
});
- //now the main layout table
- layout.setWidget( 0, 1, metaWidget );
- formatter.setRowSpan( 0, 1, 3 );
- formatter.setVerticalAlignment( 0, 1, HasVerticalAlignment.ALIGN_TOP );
- formatter.setWidth( 0, 1, "30%" );
+ HorizontalPanel hsp = new HorizontalPanel();
- //REMEMBER: subsequent rows have only one column, doh that is confusing !
- //GAAAAAAAAAAAAAAAAAAAAAAAAAAH
+ layout.add(hsp);
+
editor = EditorLauncher.getEditorViewer(asset, this);
- toolbar.setCloseCommand( new Command() {
- public void execute() {
- if (layout.hasDirty()) {
- doCloseUnsavedWarning( );
- } else {
- closeCommand.execute();
- }
- }
- } );
+ //the document widget
+ doco = new RuleDocumentWidget(asset.metaData);
- layout.setWidget( 1, 0, editor);
- formatter.setVerticalAlignment(1, 0, HasVerticalAlignment.ALIGN_TOP);
- //the document widget
- doco = new RuleDocumentWidget(asset.metaData);
- layout.setWidget( 2, 0, doco );
- formatter.setVerticalAlignment(2, 0, HasVerticalAlignment.ALIGN_TOP);
+ VerticalPanel vert = new VerticalPanel();
+ vert.add(editor);
+ editor.setHeight("100%");
+ vert.add(doco);
+
+ vert.setWidth("100%");
+ vert.setHeight("100%");
+
+ hsp.add(vert);
+ //hsp.addStyleName("HorizontalSplitPanel");
+
+ hsp.add(metaWidget);
+ hsp.setCellWidth(metaWidget, "15%");
+
+ //hsp.setSplitPosition("80%");
+ hsp.setHeight("100%");
+
}
- void doDelete() {
+
+
+ protected boolean hasDirty() {
+ //not sure how to implement this now.
+ return false;
+ }
+
+ void doDelete() {
RepositoryServiceFactory.getService().deleteUncheckedRule( this.asset.uuid , this.asset.metaData.packageName, new GenericCallback() {
public void onSuccess(Object o) {
closeCommand.execute();
@@ -180,7 +189,7 @@
}
void doCheckin() {
- this.layout.clear();
+ layout.clear();
LoadingPopup.showMessage( "Saving, please wait..." );
RepositoryServiceFactory.getService().checkinVersion( this.asset, new GenericCallback() {
@@ -206,7 +215,6 @@
((DirtyableComposite) editor).resetDirty();
}
- metaWidget.resetDirty();
doco.resetDirty();
refreshDataAndView( );
@@ -234,7 +242,7 @@
* This will reload the contents from the database, and refresh the widgets.
*/
public void refreshDataAndView() {
-
+ LoadingPopup.showMessage("Refreshing item...");
RepositoryServiceFactory.getService().loadRuleAsset( asset.uuid, new GenericCallback() {
public void onSuccess(Object a) {
asset = (RuleAsset) a;
@@ -244,16 +252,7 @@
});
}
- /**
- * Calling this will toggle the visibility of the meta-data widget (effectively zooming
- * in the rule asset).
- */
- public void zoomIntoAsset() {
- boolean vis = !layout.getFlexCellFormatter().isVisible( 2, 0 );
- this.layout.getFlexCellFormatter().setVisible( 0, 1, vis );
- this.layout.getFlexCellFormatter().setVisible( 2, 0, vis );
- }
/**
@@ -293,9 +292,7 @@
}
});
- pop.setStyleName( "warning-Popup" );
- pop.setPopupPosition((DirtyableComposite.getWidth() - pop.getOffsetWidth()) / 2, 100);
pop.show();
}
Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetBrowser.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetBrowser.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetBrowser.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,218 +0,0 @@
-package org.drools.brms.client.rulelist;
-
-/*
- * 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 java.util.Collections;
-import java.util.Map;
-
-import org.drools.brms.client.categorynav.CategoryExplorerWidget;
-import org.drools.brms.client.categorynav.CategorySelectHandler;
-import org.drools.brms.client.common.GenericCallback;
-import org.drools.brms.client.common.ImageButton;
-import org.drools.brms.client.common.LoadingPopup;
-import org.drools.brms.client.rpc.RepositoryServiceFactory;
-import org.drools.brms.client.rpc.TableDataResult;
-import org.drools.brms.client.ruleeditor.EditorLauncher;
-import org.drools.brms.client.ruleeditor.NewAssetWizard;
-
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
-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.HasHorizontalAlignment;
-import com.google.gwt.user.client.ui.HasVerticalAlignment;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.SimplePanel;
-import com.google.gwt.user.client.ui.TabPanel;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
-
-/**
- * This is the category based asset browser (ie it has a category tree browser, as well as
- * a search box).
- *
- * @author Michael Neale
- */
-public class AssetBrowser extends Composite {
-
- public static final int EDITOR_TAB = 1;
- private TabPanel tab;
- private Map openedViewers = Collections.EMPTY_MAP;
- private AssetItemListViewer list;
-
- public AssetBrowser() {
- tab = new TabPanel();
- tab.setWidth( "100%" );
- tab.setHeight( "100%" );
-
-
-
- tab.add( doExplorer(),
- "<img src='images/explore.gif'/>Explore",
- true );
-
- tab.selectTab( 0 );
- initWidget( tab );
- }
-
- /** This will setup the explorer tab */
- private FlexTable doExplorer() {
- final FlexTable table = new FlexTable();
- //and the the delegate to open an editor for a rule resource when
- //chosen to
- list = new AssetItemListViewer( new EditItemEvent() {
- public void open(String key) {
- showLoadEditor( key );
- }
- },
- AssetItemListViewer.RULE_LIST_TABLE_ID );
-
- FlexCellFormatter formatter = table.getFlexCellFormatter();
-
- //setup the nav, which will drive the list
- CategoryExplorerWidget nav = new CategoryExplorerWidget( new CategorySelectHandler() {
- public void selected(final String selectedPath) {
- Command load = getRuleListLoadingCommand( list,
- selectedPath );
- table.setWidget( 0,
- 1,
- list );
- LoadingPopup.showMessage( "Retrieving list, please wait..." );
- DeferredCommand.add( load );
- list.setRefreshCommand( load );
- }
-
- } );
-
- final QuickFindWidget quick = new QuickFindWidget( new EditItemEvent() {
- public void open(String key) {
- showLoadEditor( key );
- }
- } );
- table.setWidget(0, 1, quick);
-
-
- formatter.setAlignment( 0,
- 0,
- HasHorizontalAlignment.ALIGN_LEFT,
- HasVerticalAlignment.ALIGN_TOP );
- formatter.setAlignment( 0,
- 1,
- HasHorizontalAlignment.ALIGN_LEFT,
- HasVerticalAlignment.ALIGN_TOP );
- formatter.setWidth( 0,
- 0,
- "30%" );
- formatter.setWidth( 0,
- 1,
- "70%" );
-
-// formatter.setHeight( 0,
-// 0,
-// "90%" );
-
-
-
-
- //Image newRule = new ImageButton( "images/new_rule.gif" );
- Button newRule = new Button("Create new rule");
- newRule.setTitle( "Create new rule" );
-
- newRule.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- showNewAssetWizard();
- }
- } );
-
- Image showFinder = new ImageButton( "images/system_search_small.png" );
- showFinder.setTitle( "Show the rule finder." );
- showFinder.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- table.setWidget(0, 1, quick);
- }
- } );
-
- HorizontalPanel actions = new HorizontalPanel();
-
- actions.add( newRule );
- actions.add( showFinder );
- actions.setStyleName( "new-asset-Icons" );
-
-
-
- VerticalPanel left = new VerticalPanel();
- left.add(actions);
- left.add(nav);
- left.setWidth("100%");
-
- table.setWidget(0, 0, left);
-
-
- return table;
- }
-
- private Command getRuleListLoadingCommand(final AssetItemListViewer list,
- final String selectedPath) {
- return new Command() {
- public void execute() {
- LoadingPopup.showMessage( "Loading list, please wait..." );
- RepositoryServiceFactory.getService().loadRuleListForCategories( selectedPath,
- new GenericCallback() {
- public void onSuccess(Object o) {
- TableDataResult result = (TableDataResult) o;
- list.loadTableData( result );
- LoadingPopup.close();
- }
- } );
- }
- };
- }
-
- public void showLoadEditor(String uuid) {
- EditorLauncher.showLoadEditor( openedViewers,
- tab,
- uuid,
- false );
- }
-
- private void showNewAssetWizard() {
- int left = 70;
- int top = 100;
-
- NewAssetWizard pop = new NewAssetWizard( new EditItemEvent() {
- public void open(String key) {
- showLoadEditor( key );
-
- }
- },
- true,
- null,
- "Create a new rule" );
- pop.setPopupPosition( left,
- top );
-
- pop.show();
- }
-
- public void setOpenedViewersContainer(Map openedViewers) {
- this.openedViewers = openedViewers;
- }
-}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemGrid.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemGrid.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemGrid.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,251 @@
+package org.drools.brms.client.rulelist;
+
+/*
+ * 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 java.util.HashMap;
+import java.util.Map;
+
+import org.drools.brms.client.common.GenericCallback;
+import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+import org.drools.brms.client.rpc.TableConfig;
+import org.drools.brms.client.rpc.TableDataResult;
+import org.drools.brms.client.rpc.TableDataRow;
+import org.drools.brms.client.ruleeditor.EditorLauncher;
+
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.Ext;
+import com.gwtext.client.data.ArrayReader;
+import com.gwtext.client.data.FieldDef;
+import com.gwtext.client.data.MemoryProxy;
+import com.gwtext.client.data.Record;
+import com.gwtext.client.data.RecordDef;
+import com.gwtext.client.data.Store;
+import com.gwtext.client.data.StringFieldDef;
+import com.gwtext.client.util.Format;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.ButtonConfig;
+import com.gwtext.client.widgets.Toolbar;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.ToolbarTextItem;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.grid.CellMetadata;
+import com.gwtext.client.widgets.grid.ColumnConfig;
+import com.gwtext.client.widgets.grid.ColumnModel;
+import com.gwtext.client.widgets.grid.Grid;
+import com.gwtext.client.widgets.grid.Renderer;
+import com.gwtext.client.widgets.grid.event.GridRowListenerAdapter;
+
+/**
+ * Uses an awesome grid and does paging for asset lists.
+ * @author Michael Neale
+ */
+public class AssetItemGrid extends Composite {
+
+
+ public static final String RULE_LIST_TABLE_ID = "rulelist";
+ public static final String ARCHIVED_RULE_LIST_TABLE_ID = "archivedrulelist";
+ private static final Map columnConfigs = new HashMap();
+ private static final Map recordDefs = new HashMap();
+ private static final Map rowsPerPage = new HashMap();
+
+ private final EditItemEvent editEvent;
+ private SimplePanel layout;
+
+ private int currentPosition = 0;
+ protected Store store;
+
+ public AssetItemGrid(final EditItemEvent event, final String tableConfig, final AssetItemGridDataLoader source) {
+
+ this.editEvent = event;
+ this.layout = new SimplePanel();
+
+ if (!columnConfigs.containsKey(tableConfig)) {
+ RepositoryServiceFactory.getService().loadTableConfig(tableConfig, new GenericCallback() {
+ public void onSuccess(Object data) {
+ TableConfig conf = (TableConfig) data;
+ ColumnModel cm = createColumnModel(conf);
+ columnConfigs.put(tableConfig, cm);
+ RecordDef rd = createRecordDef(conf);
+ recordDefs.put(tableConfig, rd);
+ rowsPerPage.put(tableConfig, new Integer(conf.rowsPerPage));
+ doGrid(source, cm, rd, conf.rowsPerPage);
+ }
+ });
+ } else {
+ doGrid(source,
+ (ColumnModel) columnConfigs.get(tableConfig),
+ (RecordDef) recordDefs.get(tableConfig), ((Integer) rowsPerPage.get(tableConfig)).intValue());
+ }
+
+ initWidget(layout);
+ }
+
+
+ /**
+ * Actually build the grid.
+ */
+ private void doGrid(final AssetItemGridDataLoader source, final ColumnModel cm, final RecordDef rd, final int pageSize) {
+ final int numFlds = rd.getFields().length;
+ LoadingPopup.showMessage("Loading data...");
+ source.loadData(currentPosition, pageSize, new GenericCallback() {
+ public void onSuccess(Object data) {
+ TableDataResult result = (TableDataResult) data;
+ Object[][] gridData = new Object[result.data.length][];
+ for (int i = 0; i < result.data.length; i++) {
+ TableDataRow row = result.data[i];
+ Object[] rowData = new Object[numFlds];
+ rowData[0] = row.id;
+ rowData[1] = row.format;
+ for(int j = 2; j < numFlds; j++) {
+ rowData[j] = row.values[j - 2];
+ }
+ gridData[i] = rowData;
+ }
+ MemoryProxy proxy = new MemoryProxy(gridData);
+ ArrayReader reader = new ArrayReader(rd);
+ store = new Store(proxy, reader);
+ final Grid g = new Grid(Ext.generateId(), "480px", "500px", store, cm);
+ g.render();
+ g.setLoadMask("Loading data...");
+
+ Toolbar tb = new Toolbar(g.getView().getHeaderPanel(true));
+ tb.addItem(new ToolbarTextItem(Format.format(
+ "Showing item #{0} to {1} of {2} items.",
+ new String[] {""+(currentPosition + 1), "" + (currentPosition + result.data.length), "" + result.total})));
+ if (currentPosition > 0) {
+ navButton(source, cm, rd, pageSize, g, false, tb);
+ }
+ if (result.hasNext) {
+ navButton(source, cm, rd, pageSize, g, true, tb);
+ }
+
+ tb.addButton(new ToolbarButton(new ButtonConfig() {
+ {
+ setText("Refresh");
+ setButtonListener(new ButtonListenerAdapter() {
+ public void onClick(Button button, EventObject e) {
+ layout.clear();
+ g.destroy();
+ doGrid(source, cm, rd, pageSize);
+ }
+ });
+ }
+ }));
+
+
+
+ g.addGridRowListener(new GridRowListenerAdapter() {
+ public void onRowDblClick(Grid grid, int rowIndex, EventObject e) {
+ String uuid = grid.getSelectionModel().getSelected().getAsString("uuid");
+ System.err.println("Opening: " + uuid);
+ editEvent.open(uuid);
+ }
+ });
+ store.load();
+ layout.add(g);
+ LoadingPopup.close();
+ }
+
+
+ });
+ }
+
+ private void navButton(final AssetItemGridDataLoader source,
+ final ColumnModel cm, final RecordDef rd,
+ final int pageSize, final Grid g, final boolean forward, Toolbar tb) {
+
+ ToolbarButton b = new ToolbarButton(new ButtonConfig() {
+ {
+ setText((forward) ? "Next ->" : "<- Previous");
+ }
+ });
+ tb.addButton(b);
+
+ b.addButtonListener(new ButtonListenerAdapter() {
+ public void onClick(Button button, EventObject e) {
+ currentPosition = (forward) ? currentPosition + pageSize : currentPosition - pageSize;
+ layout.clear();
+ g.destroy();
+ doGrid(source, cm, rd, pageSize);
+ }
+ });
+ }
+
+ private RecordDef createRecordDef(TableConfig conf) {
+ FieldDef[] fd = new FieldDef[conf.headers.length + 2]; //2 as we have format and UUID to tack on.
+ fd[0] = new StringFieldDef("uuid");
+ fd[1] = new StringFieldDef("format");
+ for (int i = 0; i < conf.headers.length; i++) {
+ fd[i + 2] = new StringFieldDef(conf.headers[i]);
+ }
+ return new RecordDef(fd);
+ }
+
+ private ColumnModel createColumnModel(TableConfig conf) {
+ ColumnConfig[] cfgs = new ColumnConfig[conf.headers.length + 1];
+
+ //first the UUID
+ cfgs[0] = new ColumnConfig() {
+ {
+ setHidden(true);
+ setDataIndex("uuid");
+ }
+ };
+
+
+ //now the visible headers
+ for (int i = 0; i < conf.headers.length; i++) {
+ final String header = conf.headers[i];
+
+ cfgs[i + 1] = new ColumnConfig() {
+ {
+ if (!header.equals("Description")) {
+ setHeader(header);
+ setSortable(true);
+ setDataIndex(header);
+ if (header.equals("Name")) { //name is special !
+ setWidth(220);
+ setRenderer(new Renderer() {
+ public String render(Object value,
+ CellMetadata cellMetadata, Record record,
+ int rowIndex, int colNum, Store store) {
+ String fmtIcon = "images/" + EditorLauncher.getAssetFormatIcon(record.getAsString("format"));
+ return Format.format("<img src='{0}'/><b>{1}</b><br/><small>{2}</small<", new String[]{fmtIcon,
+ (String) value,
+ record.getAsString("Description")});
+ }
+ });
+ }
+ } else {
+ setHidden(true); //don't want to show a separate description
+ }
+
+
+ }
+ };
+ }
+
+
+ return new ColumnModel(cfgs);
+ }
+
+
+
+}
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemGrid.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemGridDataLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemGridDataLoader.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemGridDataLoader.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,18 @@
+package org.drools.brms.client.rulelist;
+
+import org.drools.brms.client.common.GenericCallback;
+
+/**
+ * This is used by the grid view to load data, in a paged fashion (if possible to do paging).
+ *
+ * @author Michael Neale
+ */
+public interface AssetItemGridDataLoader {
+
+ /**
+ * This will be called by the grid when loading data, needs to know how to skip, and how many rows to load up.
+ *
+ * cb will return TableDataResult type.
+ */
+ void loadData(int startRow, int numberOfRows, GenericCallback cb);
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemGridDataLoader.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemListViewer.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemListViewer.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/AssetItemListViewer.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -39,6 +39,9 @@
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.widgets.grid.Grid;
+import com.gwtext.client.widgets.grid.event.GridRowListener;
/**
* This is a viewer for viewing a list of rules for editing/selection.
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/QuickFindWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/QuickFindWidget.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/QuickFindWidget.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -23,6 +23,7 @@
import org.drools.brms.client.common.FormStyleLayout;
import org.drools.brms.client.common.GenericCallback;
import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.common.PrettyFormLayout;
import org.drools.brms.client.rpc.RepositoryServiceFactory;
import org.drools.brms.client.rpc.TableDataResult;
import org.drools.brms.client.rpc.TableDataRow;
@@ -83,27 +84,27 @@
srch.add( searchBox );
srch.add( go );
- archiveBox = new CheckBox("Include archived items in list");
- archiveBox.setStyleName( "small-Text" );
+ archiveBox = new CheckBox();
+
archiveBox.setChecked(false);
layout.addAttribute( "Find items with a name matching:", srch );
- layout.addRow( archiveBox );
- layout.addRow( new HTML("<hr/>") );
+ layout.addAttribute("Include archived items in list:", archiveBox);
+
listPanel = new FlexTable();
listPanel.setWidget( 0, 0, new HTML("<img src='images/information.gif'/> Enter the name or part of a name. Alternatively, use the categories to browse.") );
- layout.addRow(listPanel);
- listPanel.setStyleName( "editable-Surface" );
+ PrettyFormLayout pfl = new PrettyFormLayout();
+ pfl.startSection();
+ pfl.addRow(listPanel);
+ pfl.endSection();
+ layout.addRow(pfl);
-
searchBox.addKeyboardListener( getKeyboardListener());
- layout.setStyleName( "quick-find" );
-
initWidget( layout );
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css 2008-01-31 07:57:21 UTC (rev 18215)
@@ -20,6 +20,31 @@
}
+.VerticalSplitPanel .vsplitter
+{
+ background-color : #f3f2e7;
+ border: 1px solid #aa9;
+ /* Pretty much everything */
+ cursor : n-resize;
+
+ /* IE6, IE7, FF2, Safari Win */
+ cursor : row-resize;
+}
+
+.HorizontalSplitPanel .hsplitter
+{
+ background-color : #f3f2e7;
+ border: 1px solid #aa9;
+ /* Pretty much everything */
+ cursor : n-resize;
+
+ /* IE6, IE7, FF2, Safari Win */
+ cursor : col-resize;
+}
+
+
+
+
.testErrorValue { border: 1px solid #CC0000;
font-color: #CC000;
font-size: small;
@@ -365,11 +390,11 @@
background:#FFF;
}
.login-Form {
- border:1px solid #aa9;
+ border:4px solid #aa9;
background:#f6f6f6;
}
.resource-name-Label {
- font-weight:700;
+ #font-weight:700;
}
.infoProse {
margin:8px;
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.html
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.html 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.html 2008-01-31 07:57:21 UTC (rev 18215)
@@ -2,14 +2,20 @@
<head>
<meta name='gwt:module' content='org.drools.brms.JBRMS'/>
<link rel='stylesheet' href='JBRMS.css'/>
+
<title>JBoss Business Rules Management System</title>
<link rel="shortcut icon" href="images/drools.gif" type="image/gif"/>
<link rel="icon" href="images/drools.gif" type="image/gif"/>
+
+ <link rel="stylesheet" type="text/css" href="js/ext/resources/css/ext-all.css"/>
+ <link rel="stylesheet" type="text/css" href="js/ext/resources/css/xtheme-gray.css" />
+
+
</head>
- <body>
- <!--<div class="headerBarblue"><img src="images/jbossrules_hdrlogo.png" width="279" height="70" /></div> -->
- <div class="headerBarblue"><img src="images/hdrlogo_drools50px.gif" /></div>
- <!-- This script is the bootstrap stuff that simply must be there; it is sent down uncompressed -->
+ <body class="xtheme-gray">
+ <div id="loadingMessage" halign="center" valign="center"><img src="images/searching.gif">Loading application,
+ Please wait. <br/><small>Tip: the first time the application is loaded this may take longer then usual.</small></div>
+ <!-- script is the bootstrap stuff that simply must be there; it is sent down uncompressed -->
<script language='javascript' src='gwt.js'></script>
<iframe id='__gwt_historyFrame' style='width:0;height:0;border:0'></iframe>
</body>
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/find.gif
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/find.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/site-nav.xml
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/site-nav.xml (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/site-nav.xml 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,23 @@
+<!--
+ There are some static stuff needed by BRMS explorer view,
+ PLEASE DO NOT EDIT THIS FILE
+-->
+
+<side-nav>
+
+ <drools-rules>
+ </drools-rules>
+
+ <drools-packages>
+ </drools-packages>
+
+ <drools-deployment>
+
+ <node title="Deployment" qtip="Dialog Examples" icon="images/package_build.gif">
+ </node>
+
+ </drools-deployment>
+
+ <drools-admin>
+ </drools-admin>
+</side-nav>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/site-nav.xml
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -19,6 +19,7 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.IOException;
import java.io.ObjectOutputStream;
import java.text.DateFormat;
import java.util.ArrayList;
@@ -31,6 +32,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -38,6 +40,7 @@
import javax.jcr.ItemExistsException;
import javax.jcr.RepositoryException;
+import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
@@ -67,6 +70,7 @@
import org.drools.brms.server.contenthandler.ContentHandler;
import org.drools.brms.server.contenthandler.IRuleAsset;
import org.drools.brms.server.contenthandler.IValidating;
+import org.drools.brms.server.contenthandler.ModelContentHandler;
import org.drools.brms.server.util.AnalysisRunner;
import org.drools.brms.server.util.BRMSSuggestionCompletionLoader;
import org.drools.brms.server.util.MetaDataMapper;
@@ -83,6 +87,7 @@
import org.drools.repository.AssetItem;
import org.drools.repository.AssetItemIterator;
import org.drools.repository.CategoryItem;
+import org.drools.repository.AssetPageList;
import org.drools.repository.PackageItem;
import org.drools.repository.RulesRepository;
import org.drools.repository.RulesRepositoryAdministrator;
@@ -270,18 +275,32 @@
@WebRemote
@Restrict("#{identity.loggedIn}")
- public TableDataResult loadRuleListForCategories(String categoryPath) throws SerializableException {
- long start = System.currentTimeMillis();
+ public TableDataResult loadRuleListForCategories(String categoryPath, int skip, int numRows) throws SerializableException {
+ //love you
+ //long time = System.currentTimeMillis();
- List list = repository.findAssetsByCategory( categoryPath );
+ AssetPageList list = repository.findAssetsByCategory( categoryPath, skip, numRows );
TableDisplayHandler handler = new TableDisplayHandler(TableDisplayHandler.DEFAULT_TABLE_TEMPLATE);
- //log.info("time for load: " + (System.currentTimeMillis() - start) );
- return handler.loadRuleListTable( list.iterator(), -1 );
+ //log.debug("time for load: " + (System.currentTimeMillis() - time) );
+ return handler.loadRuleListTable( list );
}
@WebRemote
@Restrict("#{identity.loggedIn}")
+ public TableDataResult loadRuleListForState(String stateName, int skip, int numRows) throws SerializableException {
+ //love you
+ //long time = System.currentTimeMillis();
+
+ AssetPageList list = repository.findAssetsByState( stateName, false, skip, numRows );
+ TableDisplayHandler handler = new TableDisplayHandler(TableDisplayHandler.DEFAULT_TABLE_TEMPLATE);
+ //log.debug("time for load: " + (System.currentTimeMillis() - time) );
+ return handler.loadRuleListTable( list );
+
+ }
+
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
public TableConfig loadTableConfig(String listName) {
TableDisplayHandler handler = new TableDisplayHandler(listName);
return handler.loadTableConfig();
@@ -609,17 +628,17 @@
@Restrict("#{identity.loggedIn}")
public TableDataResult listAssets(String uuid,
String formats[],
- int numRows,
- int startRow) throws SerializableException {
+ int skip,
+ int numRows) throws SerializableException {
+ if (numRows == 0) {
+ throw new DetailedSerializableException("Unable to return zero results (bug)", "probably have the parameters around the wrong way, sigh...");
+ }
long start = System.currentTimeMillis();
PackageItem pkg = repository.loadPackageByUUID( uuid );
AssetItemIterator it = pkg.listAssetsByFormat( formats );
- if (numRows != -1) {
- it.skip( startRow );
- }
TableDisplayHandler handler = new TableDisplayHandler(TableDisplayHandler.DEFAULT_TABLE_TEMPLATE);
log.debug("time for asset list load: " + (System.currentTimeMillis() - start) );
- return handler.loadRuleListTable( it, numRows );
+ return handler.loadRuleListTable( it, skip, numRows );
}
@@ -1232,9 +1251,46 @@
}
}
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String[] listTypesInPackage(String packageUUID) throws SerializableException {
+ PackageItem pkg = this.repository.loadPackageByUUID(packageUUID);
+ List<String> res = new ArrayList<String>();
+ AssetItemIterator it = pkg.listAssetsByFormat(new String[] {AssetFormats.MODEL});
+ JarInputStream jis = null;
+ try {
+ while(it.hasNext()) {
+ AssetItem asset = (AssetItem) it.next();
+ if (!asset.isArchived()) {
+ jis = new JarInputStream(asset.getBinaryContentAttachment());
+ JarEntry entry = null;
+ while ((entry = jis.getNextJarEntry()) != null) {
+ if (!entry.isDirectory()) {
+ if (entry.getName().endsWith(".class")) {
+ res.add(ModelContentHandler.convertPathToName(entry.getName()));
+ }
+ }
+ }
+ }
+ }
+ return res.toArray(new String[res.size()]);
+ } catch (IOException e) {
+ log.error(e);
+ throw new DetailedSerializableException("Unable to read the jar files in the package.", e.getMessage());
+ } finally {
+ IOUtils.closeQuietly(jis);
+ }
+
+ }
+
+
+
+
+
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ModelContentHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ModelContentHandler.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ModelContentHandler.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -59,7 +59,7 @@
while ((entry = jis.getNextJarEntry()) != null) {
if (!entry.isDirectory()) {
if (entry.getName().endsWith(".class")) {
- buf.append("import " + entry.getName().replace(".class", "").replace("/", "."));
+ buf.append("import " + convertPathToName(entry.getName()));
buf.append("\n");
}
}
@@ -72,4 +72,8 @@
}
}
+ public static String convertPathToName(String name) {
+ return name.replace(".class", "").replace("/", ".");
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/security/SecurityServiceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/security/SecurityServiceImpl.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/security/SecurityServiceImpl.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -76,7 +76,7 @@
} else {
HashSet<String> disabled = new HashSet<String>();
//disabled.add("QA");
- return new UserSecurityContext("SINGLE USER MODE (DEBUG) USE ONLY", disabled);
+ return new UserSecurityContext(null, new HashSet());//new UserSecurityContext("SINGLE USER MODE (DEBUG) USE ONLY", disabled);
}
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -2,13 +2,13 @@
/*
* 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.
@@ -26,17 +26,18 @@
import org.drools.brms.client.rpc.TableDataResult;
import org.drools.brms.client.rpc.TableDataRow;
import org.drools.repository.AssetItem;
+import org.drools.repository.AssetItemIterator;
+import org.drools.repository.AssetPageList;
import com.google.gwt.user.client.rpc.SerializableException;
/**
* This utility class handles loading of tables.
- *
+ *
* This is to give some flexibility in what fields are displayed.
- * This will likely be dynamic in the future (driven of user config stored in the
- * repository).
- *
- * @author michael neale
+ * rulelist.properties and archivedrulelist.properties are the files used.
+ *
+ * @author Michael Neale
*/
public class TableDisplayHandler {
@@ -56,17 +57,38 @@
ASSET_LIST = new RowLoader( tableconfig );
}
- public TableDataResult loadRuleListTable(Iterator list,
- int numRows) throws SerializableException {
- List<TableDataRow> data = new ArrayList<TableDataRow>();
+ public TableDataResult loadRuleListTable(AssetPageList list) throws SerializableException {
+ List<TableDataRow> data = loadRows(list.assets.iterator(), -1);
+ TableDataResult result = new TableDataResult();
+ result.data = (TableDataRow[]) data.toArray( new TableDataRow[data.size()] );
+ result.total = list.totalSize;
+ result.hasNext = list.hasNext;
+ return result;
+ }
- for ( Iterator iter = list; iter.hasNext(); ) {
- AssetItem rule = (AssetItem) iter.next();
+ public TableDataResult loadRuleListTable(AssetItemIterator it, int skip, int numRows) {
+ if (numRows != -1) {
+ it.skip(skip);
+ }
+ List<TableDataRow> data = loadRows(it, numRows);
+ TableDataResult result = new TableDataResult();
+ result.data = (TableDataRow[]) data.toArray( new TableDataRow[data.size()] );
+ result.total = it.getSize();
+ result.hasNext = it.hasNext();
+ return result;
+
+ }
+
+ private List<TableDataRow> loadRows(Iterator<AssetItem> it, int numRows) {
+ List<TableDataRow> data = new ArrayList<TableDataRow>();
+
+ for ( Iterator<AssetItem> iter = it; iter.hasNext(); ) {
+ AssetItem r = (AssetItem) iter.next();
TableDataRow row = new TableDataRow();
- row.id = rule.getUUID();
- row.format = rule.getFormat();
- row.values = ASSET_LIST.getRow( rule );
+ row.id = r.getUUID();
+ row.format = r.getFormat();
+ row.values = ASSET_LIST.getRow( r );
data.add( row );
if ( numRows != -1 ) {
if ( data.size() == numRows ) {
@@ -74,10 +96,8 @@
}
}
}
- TableDataResult result = new TableDataResult();
- result.data = (TableDataRow[]) data.toArray( new TableDataRow[data.size()] );
- return result;
- }
+ return data;
+ }
public String formatDate(Calendar cal) {
DateFormat localFormat = DateFormat.getDateInstance();
@@ -89,7 +109,7 @@
final TableConfig config = new TableConfig();
config.headers = ASSET_LIST.getHeaders();
- config.rowsPerPage = 30;
+ config.rowsPerPage = 40;
return config;
}
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/resources/rulelist.properties
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/resources/rulelist.properties 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/resources/rulelist.properties 2008-01-31 07:57:21 UTC (rev 18215)
@@ -8,7 +8,11 @@
#
# @author Michael Neale
#
-*=getFormat
+
+#these must stay the same.
Name=getName
+Description=getDescription
+
+#you can modify the following...
Last modified=getLastModified
Status=getStateDescription
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/AsyncInterfaceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/AsyncInterfaceTest.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/AsyncInterfaceTest.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,13 @@
package org.drools.brms.client;
/*
* 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.
@@ -19,33 +19,32 @@
import java.lang.reflect.Method;
+import junit.framework.TestCase;
+
import org.drools.brms.client.rpc.RepositoryService;
import org.drools.brms.client.rpc.RepositoryServiceAsync;
import org.drools.brms.client.rpc.SecurityService;
import org.drools.brms.client.rpc.SecurityServiceAsync;
-import org.drools.brms.server.ServiceImplementation;
import com.google.gwt.user.client.rpc.AsyncCallback;
-import junit.framework.TestCase;
-
/**
* This will verify that the interfaces are kosher for GWT to use.
* @author Michael Neale
*/
public class AsyncInterfaceTest extends TestCase {
-
+
public void testService() throws Exception {
-
+
checkService( RepositoryService.class, RepositoryServiceAsync.class );
checkService( SecurityService.class, SecurityServiceAsync.class );
-
+
}
private void checkService(Class clsInt, Class clsAsync) throws NoSuchMethodException {
for ( Method m : clsInt.getMethods()) {
-
+
Class[] paramClasses = new Class[m.getParameterTypes().length + 1];
Class[] sourceParamClasses = m.getParameterTypes();
for ( int i = 0; i < sourceParamClasses.length; i++ ) {
@@ -55,5 +54,5 @@
assertNotNull(clsAsync.getMethod( m.getName(), paramClasses ));
}
}
-
+
}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/packages/PackageHeaderWidgetTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/packages/PackageHeaderWidgetTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/packages/PackageHeaderWidgetTest.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,108 @@
+package org.drools.brms.client.packages;
+
+import org.drools.brms.client.packages.PackageHeaderWidget.Global;
+import org.drools.brms.client.packages.PackageHeaderWidget.Import;
+import org.drools.brms.client.packages.PackageHeaderWidget.Types;
+
+import junit.framework.TestCase;
+
+public class PackageHeaderWidgetTest extends TestCase {
+
+ public void testEmpty() {
+
+ PackageHeaderWidget.Types t = PackageHeaderWidget.parseHeader(null);
+ assertNotNull(t);
+ assertNotNull(t.globals);
+ assertNotNull(t.imports);
+
+ t = PackageHeaderWidget.parseHeader("");
+ assertNotNull(t);
+ assertNotNull(t.globals);
+ assertNotNull(t.imports);
+
+ }
+
+ public void testImports() {
+ String s = "import goo.bar.Whee;\n\nimport wee.waah.Foo\nimport nee.Nah";
+ PackageHeaderWidget.Types t = PackageHeaderWidget.parseHeader(s);
+ assertNotNull(t);
+ assertNotNull(t.globals);
+ assertNotNull(t.imports);
+
+ assertEquals(0, t.globals.size());
+ assertEquals(3, t.imports.size());
+ Import i = (Import) t.imports.get(0);
+ assertEquals("goo.bar.Whee", i.type);
+
+ i = (Import) t.imports.get(1);
+ assertEquals("wee.waah.Foo", i.type);
+
+ i = (Import) t.imports.get(2);
+ assertEquals("nee.Nah", i.type);
+
+ }
+
+ public void testGlobals() {
+ String s = "global goo.bar.Whee x;\n\nglobal wee.waah.Foo asd\nglobal nee.Nah d";
+ PackageHeaderWidget.Types t = PackageHeaderWidget.parseHeader(s);
+ assertNotNull(t);
+ assertNotNull(t.globals);
+ assertNotNull(t.imports);
+
+ assertEquals(3, t.globals.size());
+ assertEquals(0, t.imports.size());
+
+ Global i = (Global) t.globals.get(0);
+ assertEquals("goo.bar.Whee", i.type);
+ assertEquals("x", i.name);
+
+ i = (Global) t.globals.get(1);
+ assertEquals("wee.waah.Foo", i.type);
+ assertEquals("asd", i.name);
+
+ i = (Global) t.globals.get(2);
+ assertEquals("nee.Nah", i.type);
+ assertEquals("d", i.name);
+
+ }
+
+ public void testGlobalsImports() {
+ String s = "import goo.bar.Whee;\n\nglobal wee.waah.Foo asd";
+ PackageHeaderWidget.Types t = PackageHeaderWidget.parseHeader(s);
+ assertNotNull(t);
+ assertEquals(1, t.imports.size());
+ assertEquals(1, t.globals.size());
+
+ Import i = (Import) t.imports.get(0);
+ assertEquals("goo.bar.Whee", i.type);
+
+ Global g = (Global) t.globals.get(0);
+ assertEquals("wee.waah.Foo", g.type);
+ assertEquals("asd", g.name);
+
+
+ }
+
+ public void testAdvanced() {
+ String s = "import goo.bar.Whee;\nglobal Wee waa;\n \nsomething else maybe dialect !";
+ assertEquals(null, PackageHeaderWidget.parseHeader(s));
+ }
+
+ public void testRenderTypes() {
+ Types t = new Types();
+ t.imports.add(new Import("foo.bar.Baz"));
+ String h = PackageHeaderWidget.renderTypes(t);
+ assertNotNull(h);
+ assertEquals("import foo.bar.Baz", h.trim());
+ t = PackageHeaderWidget.parseHeader(h);
+ assertEquals(1, t.imports.size());
+ Import i = (Import) t.imports.get(0);
+ assertEquals("foo.bar.Baz", i.type);
+
+ t.globals.add(new Global("foo.Bar", "xs"));
+ h = PackageHeaderWidget.renderTypes(t);
+ assertEquals("import foo.bar.Baz\nglobal foo.Bar xs", h.trim());
+
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/packages/PackageHeaderWidgetTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -186,14 +186,16 @@
"testRuleTableLoad", "rule");
TableDataResult result = impl
- .loadRuleListForCategories("testRuleTableLoad");
+ .loadRuleListForCategories("testRuleTableLoad", 0, -1);
assertEquals(2, result.data.length);
String key = result.data[0].id;
assertFalse(key.startsWith("testRule"));
assertEquals(result.data[0].format, "rule");
- assertTrue(result.data[0].values[0].startsWith("rule"));
+
+
+ assertTrue(result.data[0].values[0].startsWith("testRuleTableLoad"));
}
public void testDateFormatting() throws Exception {
@@ -215,8 +217,10 @@
"testLoadRuleAsset", "testLoadRuleAsset", "drl");
TableDataResult res = impl
- .loadRuleListForCategories("testLoadRuleAsset");
+ .loadRuleListForCategories("testLoadRuleAsset", 0, -1);
assertEquals(1, res.data.length);
+ assertEquals(1, res.total);
+ assertFalse(res.hasNext);
TableDataRow row = res.data[0];
String uuid = row.id;
@@ -506,31 +510,35 @@
"testListByFormat", "testListByFormat");
TableDataResult res = impl.listAssets(pkgUUID, arr("testListByFormat"),
- -1, 0);
+ 0, -1);
assertEquals(4, res.data.length);
assertEquals(uuid, res.data[0].id);
assertEquals("testListByFormat", res.data[0].values[0]);
- res = impl.listAssets(pkgUUID, arr("testListByFormat"), 4, 0);
+ res = impl.listAssets(pkgUUID, arr("testListByFormat"), 0, 4);
assertEquals(4, res.data.length);
- res = impl.listAssets(pkgUUID, arr("testListByFormat"), 2, 0);
+ res = impl.listAssets(pkgUUID, arr("testListByFormat"), 0, 2);
assertEquals(2, res.data.length);
assertEquals(uuid, res.data[0].id);
+ assertEquals(4, res.total);
+ assertTrue(res.hasNext);
res = impl.listAssets(pkgUUID, arr("testListByFormat"), 2, 2);
assertEquals(2, res.data.length);
assertEquals(uuid3, res.data[0].id);
+ assertEquals(4, res.total);
+ assertFalse(res.hasNext);
uuid = impl.createNewRule("testListByFormat5", "x", cat,
"testListByFormat", "otherFormat");
- res = impl.listAssets(pkgUUID, arr("otherFormat"), 40, 0);
+ res = impl.listAssets(pkgUUID, arr("otherFormat"), 0, 40);
assertEquals(1, res.data.length);
assertEquals(uuid, res.data[0].id);
res = impl.listAssets(pkgUUID, new String[] { "otherFormat",
- "testListByFormat" }, 40, 0);
+ "testListByFormat" }, 0, 40);
assertEquals(5, res.data.length);
TableDataResult result = impl.quickFindAsset("testListByForma", 5,
@@ -619,15 +627,15 @@
"sourcePackage", "drl");
TableDataResult res = impl.listAssets(destPkgId,
- new String[] { "drl" }, 2, 0);
+ new String[] { "drl" }, 0, 2);
assertEquals(0, res.data.length);
impl.changeAssetPackage(uuid, "targetPackage", "yeah");
- res = impl.listAssets(destPkgId, new String[] { "drl" }, 2, 0);
+ res = impl.listAssets(destPkgId, new String[] { "drl" }, 0, 2);
assertEquals(1, res.data.length);
- res = impl.listAssets(sourcePkgId, new String[] { "drl" }, 2, 0);
+ res = impl.listAssets(sourcePkgId, new String[] { "drl" }, 0, 2);
assertEquals(0, res.data.length);
@@ -773,12 +781,12 @@
"testRemoveAsset", "testRemoveAsset");
TableDataResult res = impl.listAssets(pkgUUID, arr("testRemoveAsset"),
- -1, 0);
+ 0, -1);
assertEquals(4, res.data.length);
impl.removeAsset(uuid4);
- res = impl.listAssets(pkgUUID, arr("testRemoveAsset"), -1, 0);
+ res = impl.listAssets(pkgUUID, arr("testRemoveAsset"), 0, -1);
assertEquals(3, res.data.length);
}
@@ -800,17 +808,19 @@
"testArchiveAsset", "testArchiveAsset");
TableDataResult res = impl.listAssets(pkgUUID, arr("testArchiveAsset"),
- -1, 0);
+ 0, -1);
assertEquals(4, res.data.length);
+ assertEquals(4, res.total);
+ assertFalse(res.hasNext);
impl.archiveAsset(uuid4, true);
- res = impl.listAssets(pkgUUID, arr("testArchiveAsset"), -1, 0);
+ res = impl.listAssets(pkgUUID, arr("testArchiveAsset"), 0, -1);
assertEquals(3, res.data.length);
impl.archiveAsset(uuid4, false);
- res = impl.listAssets(pkgUUID, arr("testArchiveAsset"), -1, 0);
+ res = impl.listAssets(pkgUUID, arr("testArchiveAsset"), 0, -1);
assertEquals(4, res.data.length);
}
@@ -1689,9 +1699,28 @@
}
+ public void testListFactTypesAvailableInPackage() throws Exception {
+ ServiceImplementation impl = getService();
+ RulesRepository repo = impl.repository;
+ PackageItem pkg = repo.createPackage("testAvailableTypes", "");
+ AssetItem model = pkg.addAsset("MyModel", "");
+ model.updateFormat(AssetFormats.MODEL);
+ model.updateBinaryContentAttachment(this.getClass()
+ .getResourceAsStream("/billasurf.jar"));
+ model.checkin("");
+ repo.save();
+ String[] s = impl.listTypesInPackage(pkg.getUUID());
+ assertNotNull(s);
+ assertEquals(2, s.length);
+ assertEquals("com.billasurf.Person", s[0]);
+ assertEquals("com.billasurf.Board", s[1]);
+ }
+
+
+
private ServiceImplementation getService() throws Exception {
ServiceImplementation impl = new ServiceImplementation();
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentHandlerTest.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -79,4 +79,8 @@
}
+ public void testNameConvertion() {
+ assertEquals("com.foo.Bar", ModelContentHandler.convertPathToName("com/foo/Bar.class"));
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -278,6 +278,45 @@
}
+ public void XXtestHeadOOME() throws Exception {
+ RulesRepository repo = new RulesRepository(TestEnvironmentSessionHelper
+ .getSession());
+ PackageItem pkg = repo.createPackage("testHeadOOME", "");
+ pkg.updateHeader("import java.util.List");
+ pkg.updateCompiledPackage(new ByteArrayInputStream("foo".getBytes()));
+ pkg.checkin("");
+ repo.logout();
+
+ int iterations = 0;
+
+ while(true) {
+ iterations++;
+ FileManagerUtils fm = new FileManagerUtils();
+ fm.repository = new RulesRepository(TestEnvironmentSessionHelper
+ .getSession());
+
+ if (iterations % 50 == 0) {
+ updatePackage("testHeadOOME");
+ }
+
+ //fm.repository = new RulesRepository(TestEnvironmentSessionHelper.getSession());
+ fm.getLastModified("testHeadOOME", "LATEST");
+ fm.repository.logout();
+ System.err.println("Number " + iterations + " free mem : " + Runtime.getRuntime().freeMemory());
+ }
+
+ }
+
+ private void updatePackage(String nm) throws Exception {
+ System.err.println("---> Updating the package ");
+ RulesRepository repo = new RulesRepository(TestEnvironmentSessionHelper.getSession());
+ PackageItem pkg = repo.loadPackage(nm);
+ pkg.updateDescription(System.currentTimeMillis() + "");
+ pkg.checkin("a change");
+ repo.logout();
+
+ }
+
private List iteratorToList(Iterator assets) {
List<AssetItem> list = new ArrayList<AssetItem>();
for (Iterator iter = assets; iter.hasNext();) {
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/TableDisplayHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/TableDisplayHandlerTest.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/TableDisplayHandlerTest.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,13 +1,13 @@
package org.drools.brms.server.util;
/*
* 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.
@@ -24,16 +24,17 @@
public class TableDisplayHandlerTest extends TestCase {
public void testRowLoaders() throws Exception {
- TableDisplayHandler handler = new TableDisplayHandler(TableDisplayHandler.DEFAULT_TABLE_TEMPLATE);
+
RowLoader loader = new RowLoader(TableDisplayHandler.DEFAULT_TABLE_TEMPLATE);
-
+
assertEquals(4, loader.getHeaders().length);
String[] headers = loader.getHeaders();
- assertEquals("*", headers[0]);
- assertEquals("Name", headers[1]);
+
+ assertEquals("Name", headers[0]);
+ assertEquals("Description", headers[1]);
assertEquals("Last modified", headers[2]);
assertEquals("Status", headers[3]);
-
+
assertEquals(4, loader.extractors.size());
assertTrue(loader.extractors.get( 0 ) instanceof Method);
assertEquals("getLastModified", ((Method)loader.extractors.get( 2 )).getName());
Modified: labs/jbossrules/trunk/drools-jsr94/.project
===================================================================
--- labs/jbossrules/trunk/drools-jsr94/.project 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-jsr94/.project 2008-01-31 07:57:21 UTC (rev 18215)
@@ -1,11 +1,7 @@
<projectDescription>
<name>drools-jsr94</name>
<comment>A rule production system</comment>
- <projects>
- <project>drools-core</project>
- <project>drools-compiler</project>
- <project>drools-decisiontables</project>
- </projects>
+ <projects/>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
Modified: labs/jbossrules/trunk/drools-repository/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-repository/pom.xml 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-repository/pom.xml 2008-01-31 07:57:21 UTC (rev 18215)
@@ -14,26 +14,6 @@
<build>
<finalName>drools-repository</finalName>
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <configuration>
- <filesets>
- <fileset>
- <directory>./</directory>
- <includes>
- <include>repository**/*</include>
- <include>repository*.xml</include>
- <include>repository</include>
- </includes>
- <followSymlinks>false</followSymlinks>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
</build>
<repositories>
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -9,10 +9,10 @@
* This iterates over nodes and produces RuleItem's.
* Also allows "skipping" of results to jump to certain items,
* as per JCRs "skip".
- *
+ *
* JCR iterators are/can be lazy, so this makes the most of it for large
* numbers of assets.
- *
+ *
* @author Michael Neale
*/
public class AssetItemIterator
@@ -48,4 +48,12 @@
it.skip( i );
}
+ /**
+ * @return the size of the underlying iterator's potential data set.
+ * May be -1 if not known.
+ */
+ public long getSize() {
+ return it.getSize();
+ }
+
}
Added: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetPageList.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetPageList.java (rev 0)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetPageList.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,24 @@
+package org.drools.repository;
+
+import java.util.List;
+
+/**
+ * Used for holding a page of asset data.
+ *
+ * @author Michael Neale
+ */
+public class AssetPageList {
+
+ public final List assets;
+ public final long totalSize;
+ public final boolean hasNext;
+
+ public AssetPageList(List categories, long totalSize, boolean hasNext) {
+ this.assets = categories;
+ this.totalSize = totalSize;
+ this.hasNext = hasNext;
+ }
+
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetPageList.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -11,8 +11,10 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
+import javax.jcr.AccessDeniedException;
import javax.jcr.ImportUUIDBehavior;
import javax.jcr.ItemExistsException;
+import javax.jcr.ItemNotFoundException;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.PathNotFoundException;
@@ -59,9 +61,7 @@
* system, and if there is sufficient demand, we can modify our versioning
* scheme to be better aligned with JCR's versioning abilities.
*
- * @author Ben Truitt
- * @author Fernando Meyer
- * @author Michael Neale
+ * @author Ben Truitt - with contributions from Michael Neale and Fernando Meyer over time.
*/
public class RulesRepository {
@@ -520,7 +520,8 @@
long oldVersionNumber = headVersion.getVersionNumber();
- Version v = (Version) versionToRestore.getNode();
+ Object vToRestore = versionToRestore.getNode();
+ Version v = (Version) vToRestore;
try {
headVersion.getNode().restore( v, true );
AssetItem newHead = loadAssetByUUID( headVersion.getUUID() );
@@ -680,42 +681,63 @@
* provided category. Only the latest versions of each RuleItem will be
* returned (you will have to delve into the rules deepest darkest history
* yourself... mahahahaha).
+ *
+ * Pass in startRow of 0 to start at zero, numRowsToReturn can be set to -1 should you want it all.
*/
- public List findAssetsByCategory(String categoryTag, boolean seekArchivedAsset) throws RulesRepositoryException {
+ public AssetPageList findAssetsByCategory(String categoryTag, boolean seekArchivedAsset, int skip, int numRowsToReturn) throws RulesRepositoryException {
+ CategoryItem item = this.loadCategory( categoryTag );
- CategoryItem item = this.loadCategory( categoryTag );
- List results = new ArrayList();
try {
- PropertyIterator it = item.getNode().getReferences();
-
- while ( it.hasNext() ) {
- Property ruleLink = (Property) it.next();
- Node parentNode = ruleLink.getParent();
- if ( isNotSnapshot( parentNode ) && parentNode.getPrimaryNodeType().getName().equals( AssetItem.RULE_NODE_TYPE_NAME ) ) {
- if ( seekArchivedAsset || !parentNode.getProperty( AssetItem.CONTENT_PROPERTY_ARCHIVE_FLAG ).getBoolean() ) results.add( new AssetItem( this,
- parentNode ) );
- }
- }
- return results;
+ return loadLinkedAssets(seekArchivedAsset, skip, numRowsToReturn,
+ item.getNode());
} catch ( RepositoryException e ) {
throw new RulesRepositoryException( e );
}
}
/**
- * TODO: Comment
+ * Finds the AssetItem's linked to the requested state.
+ * Similar to finding by category.
*/
- public List findAssetsByCategory(String categoryTag) throws RulesRepositoryException {
- return this.findAssetsByCategory( categoryTag, false );
+ public AssetPageList findAssetsByState(String stateName, boolean seekArchivedAsset, int skip, int numRowsToReturn) throws RulesRepositoryException {
+ StateItem item = this.getState(stateName);
+ try {
+ return loadLinkedAssets(seekArchivedAsset, skip, numRowsToReturn,
+ item.getNode());
+ } catch ( RepositoryException e ) {
+ throw new RulesRepositoryException( e );
+ }
}
- /**
- * TODO: comment
- * @return
- * @throws IOException
- * @throws PathNotFoundException
- * @throws RepositoryException
- */
+ private AssetPageList loadLinkedAssets(boolean seekArchivedAsset, int skip,
+ int numRowsToReturn, Node n)
+ throws RepositoryException {
+ int rows = 0;
+ List results = new ArrayList();
+
+ PropertyIterator it = n.getReferences();
+ if (skip > 0) it.skip(skip);
+
+ while ( it.hasNext() && (numRowsToReturn == -1 || rows < numRowsToReturn)) {
+ Property ruleLink = (Property) it.next();
+ Node parentNode = ruleLink.getParent();
+ if ( isNotSnapshot( parentNode ) && parentNode.getPrimaryNodeType().getName().equals( AssetItem.RULE_NODE_TYPE_NAME ) ) {
+ if ( seekArchivedAsset || !parentNode.getProperty( AssetItem.CONTENT_PROPERTY_ARCHIVE_FLAG ).getBoolean() )
+ {
+ results.add( new AssetItem( this, parentNode ) );
+ rows++;
+ }
+ }
+ }
+
+ return new AssetPageList(results, it.getSize(), it.hasNext());
+ }
+
+ public AssetPageList findAssetsByCategory(String categoryTag, int skip, int numRowsToReturn) throws RulesRepositoryException {
+ return this.findAssetsByCategory( categoryTag, false, skip, numRowsToReturn );
+ }
+
+
public byte[] exportRulesRepository() throws IOException,
PathNotFoundException,
RepositoryException {
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ArchiveItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ArchiveItemTest.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ArchiveItemTest.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -15,7 +15,7 @@
private PackageItem getDefaultPackage() {
return getRepo().loadDefaultPackage();
}
-
+
public void testFindArchivedAssets() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
@@ -27,14 +27,14 @@
"X" );
repo.loadDefaultPackage().addAsset( "testFindArchivedAssets4",
"X" );
-
+
AssetItem item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testFindArchivedAssets1" );
assertFalse( item.isArchived() );
item.archiveItem( true );
item.checkin( "archiving item 1" );
item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testFindArchivedAssets1" );
assertTrue( item.isArchived() );
-
+
item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testFindArchivedAssets2" );
assertFalse( item.isArchived() );
item.archiveItem( true );
@@ -48,13 +48,13 @@
item.checkin( "archiving item 1" );
item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testFindArchivedAssets3" );
assertTrue( item.isArchived() );
-
-
- AssetItemIterator it = repo.findArchivedAssets();
-
+
+
+ AssetItemIterator it = repo.findArchivedAssets();
+
List list = iteratorToList( it );
assertEquals(3, list.size());
-
+
}
public void testArchiveBooleanFlag() throws Exception {
@@ -93,12 +93,12 @@
assertEquals( "drl",
as1.getFormat() );
- List rules = getRepo().findAssetsByCategory( "testFindRulesByCatArchive" );
+ List rules = getRepo().findAssetsByCategory( "testFindRulesByCatArchive", 0, -1 ).assets;
assertEquals( 1,
rules.size() );
List rules1 = getRepo().findAssetsByCategory( "testFindRulesByCatArchive",
- true );
+ true, 0, -1 ).assets;
assertEquals( 2,
rules1.size() );
}
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -126,47 +126,106 @@
}
+ public void testCategoriesPagination() {
+ PackageItem pkg = getRepo().createPackage("testPagination", "");
+ getRepo().loadCategory( "/" ).addCategory( "testPagedTag", "description" );
+
+ AssetItem a = pkg.addAsset("testPage1", "test content");
+ a.addCategory("testPagedTag");
+ a.checkin("");
+
+ a = pkg.addAsset("testPage2", "test content");
+ a.addCategory("testPagedTag");
+ a.checkin("");
+
+ a = pkg.addAsset("testPage3", "test content");
+ a.addCategory("testPagedTag");
+ a.checkin("");
+
+ a = pkg.addAsset("testPage4", "test content");
+ a.addCategory("testPagedTag");
+ a.checkin("");
+
+ a = pkg.addAsset("testPage5", "test content");
+ a.addCategory("testPagedTag");
+ a.checkin("");
+
+ AssetPageList list = getRepo().findAssetsByCategory("testPagedTag", 0, -1);
+ assertEquals(5, list.totalSize);
+ assertEquals(5, list.assets.size());
+ assertEquals(false, list.hasNext);
+
+
+
+ list = getRepo().findAssetsByCategory("testPagedTag", 0, 2);
+ assertEquals(5, list.totalSize);
+ assertEquals(true, list.hasNext);
+ assertEquals(2, list.assets.size());
+
+ assertEquals("testPage1", ((AssetItem)list.assets.get(0)).getName());
+ assertEquals("testPage2", ((AssetItem)list.assets.get(1)).getName());
+
+ list = getRepo().findAssetsByCategory("testPagedTag", 2, 2);
+ assertEquals(5, list.totalSize);
+ assertEquals(true, list.hasNext);
+ assertEquals(2, list.assets.size());
+
+ assertEquals("testPage3", ((AssetItem)list.assets.get(0)).getName());
+ assertEquals("testPage4", ((AssetItem)list.assets.get(1)).getName());
+
+ list = getRepo().findAssetsByCategory("testPagedTag", 2, 3);
+ assertEquals(5, list.totalSize);
+ assertEquals(false, list.hasNext);
+ assertEquals(3, list.assets.size());
+
+ assertEquals("testPage3", ((AssetItem)list.assets.get(0)).getName());
+ assertEquals("testPage4", ((AssetItem)list.assets.get(1)).getName());
+ assertEquals("testPage5", ((AssetItem)list.assets.get(2)).getName());
+
+ }
+
public void testCategories() {
- AssetItem ruleItem1 = getDefaultPackage().addAsset("testAddTag", "test content");
+ AssetItem ruleItem1 = getDefaultPackage().addAsset("testAddTag", "test content");
- getRepo().loadCategory( "/" ).addCategory( "testAddTagTestTag", "description" );
+ getRepo().loadCategory( "/" ).addCategory( "testAddTagTestTag", "description" );
- ruleItem1.addCategory("testAddTagTestTag");
- List tags = ruleItem1.getCategories();
- assertEquals(1, tags.size());
- assertEquals("testAddTagTestTag", ((CategoryItem)tags.get(0)).getName());
+ ruleItem1.addCategory("testAddTagTestTag");
+ List tags = ruleItem1.getCategories();
+ assertEquals(1, tags.size());
+ assertEquals("testAddTagTestTag", ((CategoryItem)tags.get(0)).getName());
- getRepo().loadCategory( "/" ).addCategory( "testAddTagTestTag2", "description" );
- ruleItem1.addCategory("testAddTagTestTag2");
- tags = ruleItem1.getCategories();
- assertEquals(2, tags.size());
+ getRepo().loadCategory( "/" ).addCategory( "testAddTagTestTag2", "description" );
+ ruleItem1.addCategory("testAddTagTestTag2");
+ tags = ruleItem1.getCategories();
+ assertEquals(2, tags.size());
- ruleItem1.checkin( "woot" );
+ ruleItem1.checkin( "woot" );
- //now test retrieve by tags
- List result = getRepo().findAssetsByCategory("testAddTagTestTag");
- assertEquals(1, result.size());
- AssetItem retItem = (AssetItem) result.get( 0 );
- assertEquals("testAddTag", retItem.getName());
+ //now test retrieve by tags
+ List result = getRepo().findAssetsByCategory("testAddTagTestTag", 0, -1).assets;
+ assertEquals(1, result.size());
+ AssetItem retItem = (AssetItem) result.get( 0 );
+ assertEquals("testAddTag", retItem.getName());
- ruleItem1.updateContent( "foo" );
- ruleItem1.checkin( "latest" );
+ ruleItem1.updateContent( "foo" );
+ ruleItem1.checkin( "latest" );
- result = getRepo().findAssetsByCategory( "testAddTagTestTag" );
+ result = getRepo().findAssetsByCategory( "testAddTagTestTag",0, -1 ).assets;
- assertEquals(1, result.size());
+ assertEquals(1, result.size());
- ruleItem1 = (AssetItem) result.get( 0 );
- assertEquals(2, ruleItem1.getCategories().size());
+ ruleItem1 = (AssetItem) result.get( 0 );
+ assertEquals(2, ruleItem1.getCategories().size());
- assertEquals("foo", ruleItem1.getContent());
- AssetItem prev = (AssetItem) ruleItem1.getPrecedingVersion();
- assertNotNull(prev);
+ assertEquals("foo", ruleItem1.getContent());
+ AssetItem prev = (AssetItem) ruleItem1.getPrecedingVersion();
+ assertNotNull(prev);
}
+
public void testUpdateCategories() {
getRepo().loadCategory( "/" ).addCategory( "testUpdateCategoriesOnAsset", "la" );
getRepo().loadCategory( "/" ).addCategory( "testUpdateCategoriesOnAsset2", "la" );
@@ -197,7 +256,7 @@
assertEquals("drl", as1.getFormat());
- List rules = getRepo().findAssetsByCategory( "testFindRulesByCat" );
+ List rules = getRepo().findAssetsByCategory( "testFindRulesByCat", 0, -1 ).assets;
assertEquals(2, rules.size());
for ( Iterator iter = rules.iterator(); iter.hasNext(); ) {
@@ -293,6 +352,8 @@
StateItem stateItem1 = ruleItem1.getState();
assertEquals(StateItem.DRAFT_STATE_NAME, stateItem1.getName());
+
+
ruleItem1.updateState("TestState1");
assertNotNull(ruleItem1.getState());
assertEquals("TestState1", ruleItem1.getState().getName());
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -75,16 +75,31 @@
}
- public void testFindRulesByName() throws Exception {
+ public void testFindByState() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
+ PackageItem pkg = repo.createPackage("testFindByStatePackage", "heheheh");
+ AssetItem asset1 = pkg.addAsset("asset1", "");
+ AssetItem asset2 = pkg.addAsset("asset2", "");
+ repo.createState("testFindByState");
+ repo.save();
+ asset1.updateState("testFindByState");
+ asset2.updateState("testFindByState");
+ asset1.checkin("");
+ asset2.checkin("");
+ AssetPageList list = repo.findAssetsByState("testFindByState", true, 0, -1);
+ assertEquals(2, list.assets.size());
+ }
+
+ public void testFindRulesByName() throws Exception {
+ RulesRepository repo = RepositorySessionUtil.getRepository();
+
repo.loadDefaultPackage().addAsset( "findRulesByNamex1", "X" );
repo.loadDefaultPackage().addAsset( "findRulesByNamex2", "X" );
repo.save();
-
List list = iteratorToList(repo.findAssetsByName( "findRulesByNamex1" ));
assertEquals(1, list.size());
@@ -95,7 +110,6 @@
list = iteratorToList( repo.findAssetsByName( "findRulesByNamex%") );
assertEquals(2, list.size());
-
repo.createPackageSnapshot( RulesRepository.DEFAULT_PACKAGE, "testFindRulesByName" );
repo.save();
@@ -105,7 +119,6 @@
assertEquals("X", item.getDescription());
assertEquals(1, list.size());
-
list = iteratorToList( repo.findAssetsByName( "findRulesByNamex%" ) );
assertEquals(2, list.size());
@@ -273,11 +286,11 @@
pkg.addAsset( "testCat2", "x", "/testCategoriesAndSnapshots", "drl");
repo.save();
- List items = repo.findAssetsByCategory( "/testCategoriesAndSnapshots" );
+ List items = repo.findAssetsByCategory( "/testCategoriesAndSnapshots", 0, -1 ).assets;
assertEquals(2, items.size());
repo.createPackageSnapshot( "testCategoriesAndSnapshots", "SNAP 1" );
- items = repo.findAssetsByCategory( "testCategoriesAndSnapshots" );
+ items = repo.findAssetsByCategory( "testCategoriesAndSnapshots", 0, -1 ).assets;
assertEquals(2, items.size());
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java 2008-01-31 07:57:21 UTC (rev 18215)
@@ -20,8 +20,8 @@
import junit.framework.TestCase;
-/**
- * This is a bit of a hacked scalability test.
+/**
+ * This is a bit of a hacked scalability test.
* It will add 5000 odd rule nodes, and then do some basic operations.
* It will take a LONG time to add these nodes, and does it in batches.
*
@@ -30,41 +30,41 @@
private static final int NUM = 5000;
private RulesRepository repo;
-
+
public void testDummy() {
-
+
}
-
+
public void xxtestRun() throws Exception {
JCRRepositoryConfigurator config = new JackrabbitRepositoryConfigurator();
-
+
Session session = config.getJCRRepository("./scalabilityTestRepo").login(
new SimpleCredentials("alan_parsons", "password".toCharArray()));
-
- repo = new RulesRepository(session);
-
+
+ repo = new RulesRepository(session);
+
long start = System.currentTimeMillis();
//setupData( repo );
System.out.println("time to add, version and tag 5000: " + (System.currentTimeMillis() - start));
List list = listACat(repo);
System.out.println("list size is: " + list.size());
-
+
start = System.currentTimeMillis();
AssetItem item = (AssetItem) list.get( 0 );
item.updateContent( "this is a description" );
item.checkin( "newer" );
System.out.println("time to update and version: " + (System.currentTimeMillis() - start));
-
+
start = System.currentTimeMillis();
item = (AssetItem) list.get( 42 );
item.updateContent( "this is a description" );
item.updateContent( "wooooooooooooooooooooooooooooooooooot" );
item.checkin( "latest" );
- System.out.println("time to update and version: " + (System.currentTimeMillis() - start));
-
+ System.out.println("time to update and version: " + (System.currentTimeMillis() - start));
+
}
-
+
// /** This tests it "bare" just setting properties on node types directly. */
// public void xxxtestBare() throws Exception {
// hackit();
@@ -72,115 +72,115 @@
private List listACat(RulesRepository repo) {
long start = System.currentTimeMillis();
- List results = repo.findAssetsByCategory( "HR/CAT_1" );
+ List results = repo.findAssetsByCategory( "HR/CAT_1", 0, -1 ).assets;
System.out.println("Time for listing a cat: " + (System.currentTimeMillis() - start));
-
+
start = System.currentTimeMillis();
- List results2 = repo.findAssetsByCategory( "HR/CAT_1" );
+ List results2 = repo.findAssetsByCategory( "HR/CAT_1", 0, -1 ).assets;
System.out.println("Time for listing a cat: " + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
- results2 = repo.findAssetsByCategory( "HR/CAT_100" );
+ results2 = repo.findAssetsByCategory( "HR/CAT_100", 0, -1 ).assets;
System.out.println("Time for listing a cat: " + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
- results2 = repo.findAssetsByCategory( "HR/CAT_100" );
+ results2 = repo.findAssetsByCategory( "HR/CAT_100", 0, -1 ).assets;
System.out.println("Time for listing a cat: " + (System.currentTimeMillis() - start));
-
+
return results;
}
/** To run this, need to hack the addRule method to not save a session */
private void setupData(RulesRepository repo) throws Exception {
-
+
int count = 1;
-
+
List list = new ArrayList();
-
+
String prefix = "HR/";
String cat = prefix + "CAT_1";
for (int i=1; i <= NUM; i++ ) {
-
+
if (i % 500 == 0) {
repo.getSession().save();
for ( Iterator iter = list.iterator(); iter.hasNext(); ) {
- AssetItem element = (AssetItem) iter.next();
- element.getNode().checkin();
+ AssetItem element = (AssetItem) iter.next();
+ element.getNode().checkin();
}
list.clear();
}
-
-
+
+
if (i > 2500) {
prefix = "FINANCE/";
}
-
+
if (count == 100) {
count = 1;
cat = prefix + "CAT_" + i;
System.err.println("changing CAT");
System.gc();
-
+
} else {
count++;
- }
-
+ }
+
String ruleName = "rule_" + i + "_" + System.currentTimeMillis();
System.out.println("ADDING rule: " + ruleName);
-
-
- AssetItem item = repo.loadDefaultPackage().addAsset( ruleName, "Foo(bar == " + i + ")panic(" + i + ");" );
+
+
+ AssetItem item = repo.loadDefaultPackage().addAsset( ruleName, "Foo(bar == " + i + ")panic(" + i + ");" );
item.addCategory( cat );
list.add( item );
-
+
}
-
-
-
+
+
+
}
-
+
// private void hackit() throws Exception {
-//
-//
+//
+//
// RulesRepository repo = new RulesRepository(true);
// Session session = repo.getSession();
-//
-//
+//
+//
// Node folderNode = session.getRootNode().getNode("drools:repository/drools:rule_area");
-//
+//
// for (int i=1 ; i <= 50; i++) {
-//
+//
// System.out.println("doing: Rule " + i);
-//
+//
// //create the node - see section 6.7.22.6 of the spec
// Node ruleNode = folderNode.addNode("Rule_" + i, RuleItem.RULE_NODE_TYPE_NAME );
-//
+//
// ruleNode.setProperty(RuleItem.TITLE_PROPERTY_NAME, "Rule_" + i);
-//
+//
// //TODO: set this property correctly once we've figured out logging in / JAAS
// ruleNode.setProperty(RuleItem.CONTRIBUTOR_PROPERTY_NAME, "not yet implemented");
-//
+//
// ruleNode.setProperty(RuleItem.DESCRIPTION_PROPERTY_NAME, "");
// ruleNode.setProperty(RuleItem.FORMAT_PROPERTY_NAME, RuleItem.RULE_FORMAT);
// ruleNode.setProperty(RuleItem.LHS_PROPERTY_NAME, "LHS_" + i);
-// ruleNode.setProperty(RuleItem.RHS_PROPERTY_NAME, "RHS_" + i);
+// ruleNode.setProperty(RuleItem.RHS_PROPERTY_NAME, "RHS_" + i);
// ruleNode.setProperty( VersionableItem.CHECKIN_COMMENT, "Initial" );
-//
-//
+//
+//
// Calendar lastModified = Calendar.getInstance();
// ruleNode.setProperty(RuleItem.LAST_MODIFIED_PROPERTY_NAME, lastModified);
// if (i % 500 == 0) {
// System.out.println("saving......");
// session.save();
-// System.out.println("finished.");
+// System.out.println("finished.");
// }
// }
-//
+//
// }
-
+
}
Added: labs/jbossrules/trunk/m2_repo/com/gwtext/gwtext/0.9.3/gwtext-0.9.3.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/m2_repo/com/gwtext/gwtext/0.9.3/gwtext-0.9.3.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/m2_repo/com/gwtext/gwtext/0.9.3/gwtext-0.9.3.pom
===================================================================
--- labs/jbossrules/trunk/m2_repo/com/gwtext/gwtext/0.9.3/gwtext-0.9.3.pom (rev 0)
+++ labs/jbossrules/trunk/m2_repo/com/gwtext/gwtext/0.9.3/gwtext-0.9.3.pom 2008-01-31 07:57:21 UTC (rev 18215)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?><project>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>com.gwtext</groupId>
+
+ <artifactId>gwtext</artifactId>
+
+ <name>gwtext</name>
+
+ <version>0.9.3</version>
+
+ <description></description>
+
+ <build>
+ <sourceDirectory></sourceDirectory>
+ <testSourceDirectory></testSourceDirectory>
+ </build>
+</project>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/m2_repo/com/gwtext/gwtext/0.9.3/gwtext-0.9.3.pom
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/pom.xml
===================================================================
--- labs/jbossrules/trunk/pom.xml 2008-01-31 06:25:20 UTC (rev 18214)
+++ labs/jbossrules/trunk/pom.xml 2008-01-31 07:57:21 UTC (rev 18215)
@@ -914,6 +914,11 @@
<artifactId>commons-fileupload</artifactId>
<version>1.1.1</version>
</dependency>
+ <dependency>
+ <groupId>com.gwtext</groupId>
+ <artifactId>gwtext</artifactId>
+ <version>0.9.3</version>
+ </dependency>
<!-- drools-examples -->
<dependency>
More information about the jboss-svn-commits
mailing list