diff --git a/.classpath b/.classpath
index e9c55e2..fa68597 100644
--- a/.classpath
+++ b/.classpath
@@ -14,5 +14,6 @@
+
diff --git a/lib/hibernate-annotations.jar b/lib/hibernate-annotations.jar
new file mode 100644
index 0000000..39518a7
Binary files /dev/null and b/lib/hibernate-annotations.jar differ
diff --git a/src/com/idcanet/vasc/core/VascDataExporter.java b/src/com/idcanet/vasc/core/VascDataExporter.java
new file mode 100644
index 0000000..368d2a9
--- /dev/null
+++ b/src/com/idcanet/vasc/core/VascDataExporter.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2004-2007 IDCA. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ * following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and
+ * the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions
+ * and the following disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY IDCA AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IDCA OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the authors and
+ * should not be interpreted as representing official policies, either expressed or implied, of IDCA.
+ */
+
+package com.idcanet.vasc.core;
+
+import java.io.OutputStream;
+
+
+/**
+ *
+ * @author Willem Cazander
+ * @version 1.0 May 19, 2007
+ */
+public interface VascDataExporter {
+
+ public void doExport(OutputStream out,VascTable table) throws Exception;
+}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/core/VascTable.java b/src/com/idcanet/vasc/core/VascTable.java
index 5f3ffda..46f8858 100644
--- a/src/com/idcanet/vasc/core/VascTable.java
+++ b/src/com/idcanet/vasc/core/VascTable.java
@@ -193,6 +193,12 @@ public class VascTable {
* @param tableColumns the tableColumns to set
*/
public void addTableColumns(VascTableColumn tableColumn) {
+ if (tableColumn.getVascTable()!=null) {
+ if (tableColumn.getVascTable().equals(this) == false) {
+ throw new IllegalStateException("VascTableColumn already bound to an other VascTable instance.");
+ }
+ }
+ tableColumn.setVascTable(this);
tableColumns.add(tableColumn);
}
diff --git a/src/com/idcanet/vasc/core/VascTableController.java b/src/com/idcanet/vasc/core/VascTableController.java
index 923723a..a41cee6 100644
--- a/src/com/idcanet/vasc/core/VascTableController.java
+++ b/src/com/idcanet/vasc/core/VascTableController.java
@@ -41,6 +41,8 @@ public interface VascTableController {
public void refreshData(VascTable table) throws Exception;
- public void handleException(Exception e,VascTable table);
+ public Object initEditObject(VascTable table,Object object) throws Exception;
+ public void handleException(Exception e,VascTable table);
+
}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/core/VascViewRenderer.java b/src/com/idcanet/vasc/core/VascViewRenderer.java
index e12a90f..c1cc2b0 100644
--- a/src/com/idcanet/vasc/core/VascViewRenderer.java
+++ b/src/com/idcanet/vasc/core/VascViewRenderer.java
@@ -26,6 +26,8 @@
package com.idcanet.vasc.core;
+import com.idcanet.vasc.core.column.VascTableColumn;
+
/**
*
@@ -37,4 +39,10 @@ public interface VascViewRenderer {
public void renderView(VascTable table) throws Exception;
public void renderEdit(VascTable table,Object rowBean) throws Exception;
+
+ public void renderExport(VascTable table,VascDataExporter exporter) throws Exception;
+
+ public Object defaultColumnEditor(VascTableColumn column,Object bean,Object gui) throws Exception;
+
+ public Object defaultColumnRenderer(VascTableColumn column,Object gui) throws Exception;
}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/core/column/VascColumnEditor.java b/src/com/idcanet/vasc/core/column/VascColumnEditor.java
index 166561c..994e740 100644
--- a/src/com/idcanet/vasc/core/column/VascColumnEditor.java
+++ b/src/com/idcanet/vasc/core/column/VascColumnEditor.java
@@ -33,5 +33,5 @@ package com.idcanet.vasc.core.column;
*/
public interface VascColumnEditor {
- public Object createColumnEditor(VascTableColumn column);
+ public Object createColumnEditor(VascTableColumn column,Object bean,Object gui) throws Exception;
}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/core/column/VascColumnRenderer.java b/src/com/idcanet/vasc/core/column/VascColumnRenderer.java
index 69bdce2..6351544 100644
--- a/src/com/idcanet/vasc/core/column/VascColumnRenderer.java
+++ b/src/com/idcanet/vasc/core/column/VascColumnRenderer.java
@@ -33,5 +33,5 @@ package com.idcanet.vasc.core.column;
*/
public interface VascColumnRenderer {
- public Object createColumnRender(VascTableColumn column);
+ public Object createColumnRenderer(VascTableColumn column,Object gui) throws Exception;
}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/core/column/VascColumnValue.java b/src/com/idcanet/vasc/core/column/VascColumnValue.java
index 99df430..e2ebf55 100644
--- a/src/com/idcanet/vasc/core/column/VascColumnValue.java
+++ b/src/com/idcanet/vasc/core/column/VascColumnValue.java
@@ -33,5 +33,7 @@ package com.idcanet.vasc.core.column;
*/
public interface VascColumnValue {
- public Object getValue(VascTableColumn column,Object record);
+ public Object getValue(VascTableColumn column,Object record) throws Exception;
+
+ public void setValue(VascTableColumn column,Object record,Object value) throws Exception;
}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/core/column/VascTableColumn.java b/src/com/idcanet/vasc/core/column/VascTableColumn.java
index 6779348..f115adf 100644
--- a/src/com/idcanet/vasc/core/column/VascTableColumn.java
+++ b/src/com/idcanet/vasc/core/column/VascTableColumn.java
@@ -26,6 +26,8 @@
package com.idcanet.vasc.core.column;
+import com.idcanet.vasc.core.VascTable;
+
/**
* Defines an VascTableColumn
*
@@ -50,6 +52,8 @@ public class VascTableColumn {
private Object columnRenderer = null;
private Object columnEditor = null;
+ private VascTable vascTable = null;
+
/**
* @return the defaultValue
*/
@@ -190,4 +194,18 @@ public class VascTableColumn {
public void setImage(String image) {
this.image = image;
}
+
+ /**
+ * @return the vascTable
+ */
+ public VascTable getVascTable() {
+ return vascTable;
+ }
+
+ /**
+ * @param vascTable the vascTable to set
+ */
+ public void setVascTable(VascTable vascTable) {
+ this.vascTable = vascTable;
+ }
}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/impl/DefaultVascTableController.java b/src/com/idcanet/vasc/impl/DefaultVascTableController.java
index de9a49f..6753b55 100644
--- a/src/com/idcanet/vasc/impl/DefaultVascTableController.java
+++ b/src/com/idcanet/vasc/impl/DefaultVascTableController.java
@@ -35,6 +35,8 @@ import com.idcanet.vasc.core.VascTableController;
import com.idcanet.vasc.core.column.VascAnnotationTableColumn;
import com.idcanet.vasc.core.column.VascTableColumn;
import com.idcanet.vasc.impl.column.BeanPropertyVascColumnValue;
+import com.idcanet.vasc.impl.column.DefaultVascColumnEditor;
+import com.idcanet.vasc.impl.column.DefaultVascColumnRenderer;
/**
*
@@ -75,9 +77,12 @@ public class DefaultVascTableController implements VascTableController {
if (c.getVascColumnValue()==null) {
c.setVascColumnValue(new BeanPropertyVascColumnValue(column.getBeanProperty()));
}
- if (c.getVascColumnEditor()==null) {
- //c.setVascColumnEditor(new AutoVascColumnEditor(column.getBeanProperty()));
- }
+ }
+ if (c.getVascColumnEditor()==null) {
+ c.setVascColumnEditor(new DefaultVascColumnEditor());
+ }
+ if (c.getVascColumnRenderer()==null) {
+ c.setVascColumnRenderer(new DefaultVascColumnRenderer());
}
}
}
@@ -103,6 +108,19 @@ public class DefaultVascTableController implements VascTableController {
return result;
}
+
+
+ /**
+ * @see com.idcanet.vasc.core.VascTableController#initEditObject(com.idcanet.vasc.core.VascTable, java.lang.Object)
+ */
+ public Object initEditObject(VascTable table, Object object) throws Exception {
+ if (object!=null) {
+ return object;
+ }
+ object = table.getVascRecordCreator().newRecord(table);
+ return object;
+ }
+
/**
* @see com.idcanet.vasc.core.VascTableController#refreshData()
*/
diff --git a/src/com/idcanet/vasc/impl/actions/CSVExportGlobalAction.java b/src/com/idcanet/vasc/impl/actions/CSVExportGlobalAction.java
new file mode 100644
index 0000000..888455b
--- /dev/null
+++ b/src/com/idcanet/vasc/impl/actions/CSVExportGlobalAction.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2004-2007 IDCA. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ * following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and
+ * the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions
+ * and the following disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY IDCA AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IDCA OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the authors and
+ * should not be interpreted as representing official policies, either expressed or implied, of IDCA.
+ */
+
+package com.idcanet.vasc.impl.actions;
+
+import java.io.OutputStream;
+import java.io.PrintWriter;
+
+import com.idcanet.vasc.core.VascDataExporter;
+import com.idcanet.vasc.core.VascTable;
+import com.idcanet.vasc.core.actions.AbstractVascAction;
+import com.idcanet.vasc.core.actions.GlobalVascAction;
+import com.idcanet.vasc.core.column.VascTableColumn;
+
+/**
+ *
+ * @author Willem Cazander
+ * @version 1.0 Mar 30, 2007
+ */
+public class CSVExportGlobalAction extends AbstractVascAction implements GlobalVascAction,VascDataExporter {
+
+ public CSVExportGlobalAction() {
+ setName("generic.crud.export.csv.name");
+ setToolTip("generic.crud.export.csv.tooltip");
+ setImage("/META-INF/images/silk/png/page_white_excel.png");
+ }
+
+ public void doGlobalAction(VascTable table) throws Exception {
+ table.getVascViewRenderer().renderExport(table,this);
+ }
+
+ public void doExport(OutputStream out,VascTable table) throws Exception {
+ PrintWriter p = new PrintWriter(out);
+ p.write("# csv file\n");
+ for (VascTableColumn c:table.getTableColumns()) {
+ p.write(c.getName()+"\t");
+ }
+ p.write("\n");
+ for (Object o:table.getTableData()) {
+ for (VascTableColumn c:table.getTableColumns()) {
+ p.write(c.getVascColumnValue().getValue(c, o)+"\t");
+ }
+ p.write("\n");
+ p.flush();
+ }
+ p.write("# end\n");
+ p.flush();
+ }
+}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/impl/actions/RefreshDataGlobalAction.java b/src/com/idcanet/vasc/impl/actions/RefreshDataGlobalAction.java
index cd5e75d..5fec03a 100644
--- a/src/com/idcanet/vasc/impl/actions/RefreshDataGlobalAction.java
+++ b/src/com/idcanet/vasc/impl/actions/RefreshDataGlobalAction.java
@@ -44,7 +44,7 @@ public class RefreshDataGlobalAction extends AbstractVascAction implements Globa
}
- public void doGlobalAction(VascTable table) {
- //table.getVascViewRenderer().render
+ public void doGlobalAction(VascTable table) throws Exception {
+ table.getVascTableController().refreshData(table);
}
}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/impl/actions/XMLExportGlobalAction.java b/src/com/idcanet/vasc/impl/actions/XMLExportGlobalAction.java
index 8f45329..778318b 100644
--- a/src/com/idcanet/vasc/impl/actions/XMLExportGlobalAction.java
+++ b/src/com/idcanet/vasc/impl/actions/XMLExportGlobalAction.java
@@ -26,16 +26,21 @@
package com.idcanet.vasc.impl.actions;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+
+import com.idcanet.vasc.core.VascDataExporter;
import com.idcanet.vasc.core.VascTable;
import com.idcanet.vasc.core.actions.AbstractVascAction;
import com.idcanet.vasc.core.actions.GlobalVascAction;
+import com.idcanet.vasc.core.column.VascTableColumn;
/**
*
* @author Willem Cazander
* @version 1.0 Mar 30, 2007
*/
-public class XMLExportGlobalAction extends AbstractVascAction implements GlobalVascAction {
+public class XMLExportGlobalAction extends AbstractVascAction implements GlobalVascAction,VascDataExporter {
public XMLExportGlobalAction() {
setName("generic.crud.export.xml.name");
@@ -43,8 +48,23 @@ public class XMLExportGlobalAction extends AbstractVascAction implements GlobalV
setImage("/META-INF/images/silk/png/page_white_excel.png");
}
+ public void doGlobalAction(VascTable table) throws Exception {
+ table.getVascViewRenderer().renderExport(table,this);
+ }
- public void doGlobalAction(VascTable table) {
- //table.getVascViewRenderer().render
+ public void doExport(OutputStream out,VascTable table) throws Exception {
+ PrintWriter p = new PrintWriter(out);
+ p.write("\n");
+ p.write("\n");
+ for (Object o:table.getTableData()) {
+ for (VascTableColumn c:table.getTableColumns()) {
+ p.write("");
+ p.write(""+c.getVascColumnValue().getValue(c, o));
+ p.write("\n");
+ }
+ p.flush();
+ }
+ p.write("\n");
+ p.flush();
}
}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/impl/column/BeanPropertyVascColumnValue.java b/src/com/idcanet/vasc/impl/column/BeanPropertyVascColumnValue.java
index de28e18..13223b7 100644
--- a/src/com/idcanet/vasc/impl/column/BeanPropertyVascColumnValue.java
+++ b/src/com/idcanet/vasc/impl/column/BeanPropertyVascColumnValue.java
@@ -39,29 +39,42 @@ public class BeanPropertyVascColumnValue implements VascColumnValue {
private String property = null;
+ private DefaultElementParameterHelper helper = null;
+
public BeanPropertyVascColumnValue() {
-
+ helper = new DefaultElementParameterHelper();
}
public BeanPropertyVascColumnValue(String property) {
+ this();
setProperty(property);
}
- public Object getValue(VascTableColumn column,Object record) {
+ /**
+ * @see com.idcanet.vasc.core.column.VascColumnValue#getValue(com.idcanet.vasc.core.column.VascTableColumn, java.lang.Object)
+ */
+ public Object getValue(VascTableColumn column,Object record) throws Exception {
if(getProperty()==null) {
return null;
}
if(getProperty().equals("")) {
return "";
}
- DefaultElementParameterHelper helper = new DefaultElementParameterHelper();
- try {
- return helper.getParameter(record, getProperty());
- } catch (Exception e) {
- e.printStackTrace();
- return "Err";
- }
+ return helper.getParameter(record, getProperty());
}
-
+
+ /**
+ * @see com.idcanet.vasc.core.column.VascColumnValue#setValue(com.idcanet.vasc.core.column.VascTableColumn, java.lang.Object, java.lang.Object)
+ */
+ public void setValue(VascTableColumn column, Object record,Object value) throws Exception {
+ if(getProperty()==null) {
+ return;
+ }
+ if(getProperty().equals("")) {
+ return;
+ }
+ helper.setParameter(record, getProperty(),value);
+ }
+
/**
* @return the property
*/
diff --git a/src/com/idcanet/vasc/impl/column/DefaultVascColumnEditor.java b/src/com/idcanet/vasc/impl/column/DefaultVascColumnEditor.java
new file mode 100644
index 0000000..7123970
--- /dev/null
+++ b/src/com/idcanet/vasc/impl/column/DefaultVascColumnEditor.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2004-2007 IDCA. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ * following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and
+ * the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions
+ * and the following disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY IDCA AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IDCA OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the authors and
+ * should not be interpreted as representing official policies, either expressed or implied, of IDCA.
+ */
+
+package com.idcanet.vasc.impl.column;
+
+import com.idcanet.vasc.core.column.VascColumnEditor;
+import com.idcanet.vasc.core.column.VascTableColumn;
+
+/**
+ *
+ * @author Willem Cazander
+ * @version 1.0 Mar 21, 2007
+ */
+public class DefaultVascColumnEditor implements VascColumnEditor {
+
+ public Object createColumnEditor(VascTableColumn column,Object bean,Object gui) throws Exception {
+ return column.getVascTable().getVascViewRenderer().defaultColumnEditor(column,bean, gui);
+ }
+}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/impl/column/DefaultVascColumnRenderer.java b/src/com/idcanet/vasc/impl/column/DefaultVascColumnRenderer.java
new file mode 100644
index 0000000..272e100
--- /dev/null
+++ b/src/com/idcanet/vasc/impl/column/DefaultVascColumnRenderer.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2004-2007 IDCA. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ * following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and
+ * the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions
+ * and the following disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY IDCA AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IDCA OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the authors and
+ * should not be interpreted as representing official policies, either expressed or implied, of IDCA.
+ */
+
+package com.idcanet.vasc.impl.column;
+
+import com.idcanet.vasc.core.column.VascColumnRenderer;
+import com.idcanet.vasc.core.column.VascTableColumn;
+
+/**
+ *
+ * @author Willem Cazander
+ * @version 1.0 Mar 21, 2007
+ */
+public class DefaultVascColumnRenderer implements VascColumnRenderer {
+
+ public Object createColumnRenderer(VascTableColumn column,Object gui) throws Exception {
+ return column.getVascTable().getVascViewRenderer().defaultColumnRenderer(column, gui);
+ }
+}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/impl/column/NullVascColumnValue.java b/src/com/idcanet/vasc/impl/column/NullVascColumnValue.java
index 9f23c00..40d9964 100644
--- a/src/com/idcanet/vasc/impl/column/NullVascColumnValue.java
+++ b/src/com/idcanet/vasc/impl/column/NullVascColumnValue.java
@@ -36,7 +36,18 @@ import com.idcanet.vasc.core.column.VascTableColumn;
*/
public class NullVascColumnValue implements VascColumnValue {
- public Object getValue(VascTableColumn column,Object record) {
+ /**
+ * @see com.idcanet.vasc.core.column.VascColumnValue#getValue(com.idcanet.vasc.core.column.VascTableColumn, java.lang.Object)
+ */
+ public Object getValue(VascTableColumn column, Object record) throws Exception {
return null;
}
+
+ /**
+ * @see com.idcanet.vasc.core.column.VascColumnValue#setValue(com.idcanet.vasc.core.column.VascTableColumn, java.lang.Object, java.lang.Object)
+ */
+ public void setValue(VascTableColumn column, Object record, Object value) throws Exception {
+ }
+
+
}
\ No newline at end of file
diff --git a/src/com/idcanet/vasc/impl/swt/SwtVascViewRenderer.java b/src/com/idcanet/vasc/impl/swt/SwtVascViewRenderer.java
index e6b982c..ee29541 100644
--- a/src/com/idcanet/vasc/impl/swt/SwtVascViewRenderer.java
+++ b/src/com/idcanet/vasc/impl/swt/SwtVascViewRenderer.java
@@ -26,9 +26,13 @@
package com.idcanet.vasc.impl.swt;
+import java.awt.TextField;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
@@ -47,18 +51,22 @@ import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import com.idcanet.fff.SwingImageHelper;
+import com.idcanet.vasc.core.VascDataExporter;
import com.idcanet.vasc.core.VascTable;
import com.idcanet.vasc.core.VascUserOption;
import com.idcanet.vasc.core.VascViewRenderer;
@@ -82,19 +90,41 @@ public class SwtVascViewRenderer implements VascViewRenderer {
this.parent=parent;
}
+ private static final String[] FILTER_NAMES = {
+ "All Files (*.*)",
+ "Comma Separated Values Files (*.csv)",
+ "Microsoft Excel Spreadsheet Files (*.xls)",
+ };
+ /** These filter extensions are used to filter which files are displayed. */
+ private static final String[] FILTER_EXTS = { "*.*","*.csv","*.xls" };
+
+ public void renderExport(VascTable table,VascDataExporter exporter) throws Exception {
+ FileDialog dlg = new FileDialog(Display.getCurrent().getActiveShell(), SWT.SAVE);
+ dlg.setFilterNames(FILTER_NAMES);
+ dlg.setFilterExtensions(FILTER_EXTS);
+ dlg.setFileName(table.getHeaderName()+".csv");
+ String fileName = dlg.open();
+ logger.fine("FileName: "+fileName);
+ if (fileName == null) {
+ return;
+ }
+ OutputStream out = new FileOutputStream(fileName);
+ try {
+ exporter.doExport(out, table);
+ } catch (Exception e) {
+ //MessageDialog.openError(Display.getCurrent().getActiveShell(),crudTable.i18n("crud.event.export.error.title"),crudTable.i18n("crud.event.export.error.message"));
+ logger.log(Level.WARNING,"Error: "+e.getMessage(),e);
+ } finally {
+ if (out!=null) {
+ out.close();
+ }
+ }
+ }
+
public void renderEdit(VascTable table,Object object) throws Exception {
logger.info("Rending Edit View");
-
- if (object==null) {
- try {
- object = table.getVascRecordCreator().newRecord(table);
- logger.finest("created: "+object);
- } catch (Exception e) {
- table.getVascTableController().handleException(e, table);
- return;
- }
- }
+ table.getVascTableController().initEditObject(table, object);
SwtVascEditDialog dialog = new SwtVascEditDialog(Display.getCurrent().getActiveShell(),table,object,"Edit","TOITO");
Object result = dialog.open();
@@ -216,39 +246,36 @@ public class SwtVascViewRenderer implements VascViewRenderer {
l.setToolTipText(c.getToolTip());
}
- if(c.getVascColumnEditor()==null) {
- Label valueLabel = new Label(body, SWT.WRAP);
- valueLabel.setText(""+c.getVascColumnValue().getValue(c, bean));
- } else {
- c.getVascColumnEditor().createColumnEditor(c);
- }
- // SWTComponentFactory.createLabel(body,ba.getValueModel(c.getObjectProperty()),SWT.WRAP);
- // continue;
- //}
- //ValueModel vm = ba.getValueModel(c.getObjectProperty());
-
- //c.getVascColumnEditor().createColumnEditor(c);
-
+ try {
+ if(c.getVascColumnEditor()==null) {
+ Label valueLabel = new Label(body, SWT.WRAP);
+ valueLabel.setText(""+c.getVascColumnValue().getValue(c, bean));
+ c.setColumnEditor(valueLabel);
+ } else {
+ c.setColumnEditor(c.getVascColumnEditor().createColumnEditor(c,bean,body));
+ }
+ } catch (Exception e) {
+ logger.log(Level.WARNING,"Error making column editor: '"+c.getVascColumnValue()+"' error: "+e.getMessage(),e);
+ }
// set the default value before creating property
- /*
- if(vm.getValue()==null & c.getDefaultValue()!=null) {
+ if(c.getVascColumnValue()==null & c.getDefaultValue()!=null) {
try {
logger.finer("Setting default value for: "+c.getName()+" def: "+c.getDefaultValue());
- vm.setValue(c.getDefaultValue());
+ c.getVascColumnValue().setValue(c, bean, c.getDefaultValue());
} catch (Exception e) {
logger.log(Level.WARNING,"Error in setting default value: '"+c.getDefaultValue()+"' error: "+e.getMessage(),e);
}
}
- */
- //Control editor = c.getPropertyEditor().createPropertyEditor(body,vm);
- GridData gridData = new GridData();
- gridData.grabExcessHorizontalSpace = true;
- gridData.grabExcessVerticalSpace = true;
- gridData.horizontalAlignment = GridData.FILL;
- gridData.verticalAlignment = GridData.FILL;
- //editor.setLayoutData(gridData);
- //c.setTempObjectPropertyControl(editor);
+ if(c.getColumnEditor() instanceof Control) {
+ Control editor = (Control)c.getColumnEditor();
+ GridData gridData = new GridData();
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.horizontalAlignment = GridData.FILL;
+ gridData.verticalAlignment = GridData.FILL;
+ editor.setLayoutData(gridData);
+ }
}
// create some spaceing , should replace by seperator
@@ -279,6 +306,45 @@ public class SwtVascViewRenderer implements VascViewRenderer {
}
}
+ public Object defaultColumnEditor(VascTableColumn column,Object bean,Object gui) throws Exception {
+
+ Composite body = (Composite)gui;
+ Text text = new Text(body,SWT.SINGLE);
+ text.addSelectionListener(new TextListener(column,bean));
+ text.setText(""+column.getVascColumnValue().getValue(column, bean));
+ return text;
+ }
+
+ class TextListener extends SelectionAdapter {
+
+ private VascTableColumn column = null;
+ private Object bean = null;
+
+ public TextListener(VascTableColumn column,Object bean) {
+ this.column=column;
+ this.bean=bean;
+ }
+
+ /**
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ public void widgetSelected(SelectionEvent e) {
+ // SHIT it works :)
+ Object value = e.data;
+ logger.finer("Setting value: "+value);
+ try {
+ column.getVascColumnValue().setValue(column, bean, value);
+ } catch (Exception ee) {
+ ee.printStackTrace();
+ }
+ }
+ }
+
+ public Object defaultColumnRenderer(VascTableColumn column,Object gui) throws Exception {
+
+ return null;
+ }
+
public void renderView(VascTable table) throws Exception {
@@ -589,7 +655,12 @@ public class SwtVascViewRenderer implements VascViewRenderer {
public String getColumnText(Object bean, int columnNumber) {
VascTableColumn vtc = table.getTableColumns().get(columnNumber);
if (vtc.getColumnRenderer()==null) {
- return ""+vtc.getVascColumnValue().getValue(vtc,bean);
+ try {
+ return ""+vtc.getVascColumnValue().getValue(vtc,bean);
+ } catch (Exception e) {
+ logger.log(Level.WARNING,"Error in get value: '"+vtc.getVascColumnValue()+"' error: "+e.getMessage(),e);
+ return "Err";
+ }
}
// see custem column renderer, so this code will never be called
return "CUSTEM_RENDER";
diff --git a/tests/com/idcanet/vasc/tests/SWTTest.java b/tests/com/idcanet/vasc/tests/SWTTest.java
index 89af190..efe1613 100644
--- a/tests/com/idcanet/vasc/tests/SWTTest.java
+++ b/tests/com/idcanet/vasc/tests/SWTTest.java
@@ -39,11 +39,14 @@ import com.idcanet.vasc.impl.BeanVascRecordCreator;
import com.idcanet.vasc.impl.DefaultVascTableController;
import com.idcanet.vasc.impl.DefaultVascTextValue;
import com.idcanet.vasc.impl.actions.AddRowAction;
+import com.idcanet.vasc.impl.actions.CSVExportGlobalAction;
import com.idcanet.vasc.impl.actions.DeleteRowAction;
import com.idcanet.vasc.impl.actions.EditRowAction;
+import com.idcanet.vasc.impl.actions.RefreshDataGlobalAction;
import com.idcanet.vasc.impl.actions.XMLExportGlobalAction;
import com.idcanet.vasc.impl.column.BeanPropertyVascColumnValue;
-import com.idcanet.vasc.impl.serv5.Serv5HibernateVascDataSource;
+import com.idcanet.vasc.impl.column.DefaultVascColumnEditor;
+import com.idcanet.vasc.impl.column.DefaultVascColumnRenderer;
import com.idcanet.vasc.impl.swt.SwtVascViewRenderer;
import com.idcanet.vasc.tests.models.TestModel;
import com.idcanet.xtes.core.TemplateStore;
@@ -102,9 +105,9 @@ public class SWTTest extends TestCase {
table.addRowActions(new DeleteRowAction());
table.addGlobalActions(new XMLExportGlobalAction());
- //table.addGlobalActions(new CSVExportGlobalAction());
+ table.addGlobalActions(new CSVExportGlobalAction());
//table.addGlobalActions(new HTMLExportGlobalAction());
- //table.addGlobalActions(new RefreshGlobalAction());
+ table.addGlobalActions(new RefreshDataGlobalAction());
//table.addUserOptions(userOption);
@@ -116,8 +119,8 @@ public class SWTTest extends TestCase {
column.setDefaultValue("DEFFFFFF");
column.setHelpId("helpColumnKey");
column.setWidth(400);
- //column.setVascColumnEditor(new AutoVascColumnEditor("name"));
- //column.setVascColumnRenderer(vascColumnRenderer);
+ column.setVascColumnEditor(new DefaultVascColumnEditor());
+ column.setVascColumnRenderer(new DefaultVascColumnRenderer());
column.setVascColumnValue(new BeanPropertyVascColumnValue("name"));
table.addTableColumns(column);
diff --git a/tests/com/idcanet/vasc/tests/models/TestModel.java b/tests/com/idcanet/vasc/tests/models/TestModel.java
index 65e98d1..c65819c 100644
--- a/tests/com/idcanet/vasc/tests/models/TestModel.java
+++ b/tests/com/idcanet/vasc/tests/models/TestModel.java
@@ -29,6 +29,9 @@ package com.idcanet.vasc.tests.models;
import java.util.Date;
+import org.hibernate.validator.NotNull;
+import org.hibernate.validator.Max;
+
import com.idcanet.vasc.annotations.VascColumnWidth;
import com.idcanet.vasc.annotations.VascDefaultValue;
import com.idcanet.vasc.annotations.VascHelpId;
@@ -71,6 +74,8 @@ public class TestModel {
@VascHelpId(helpId="help.id")
@VascDefaultValue(defaultValue="xxxxx")
@VascColumnWidth(width=200)
+ @NotNull
+ @Max(value=10)
public String getDescription() {
return description;
}