diff --git a/.classpath b/.classpath index 727be5a..976a4b6 100644 --- a/.classpath +++ b/.classpath @@ -3,16 +3,15 @@ - - - - + + + diff --git a/lib/idcanet-jmx-bin.jar b/lib/idcanet-jmx-bin.jar new file mode 100644 index 0000000..b3b04fa Binary files /dev/null and b/lib/idcanet-jmx-bin.jar differ diff --git a/lib/junit-4.1.jar b/lib/junit-4.1.jar deleted file mode 100644 index 2c46d67..0000000 Binary files a/lib/junit-4.1.jar and /dev/null differ diff --git a/lib/org.eclipse.jface_3.2.1.jar b/lib/org.eclipse.jface_3.2.1.jar deleted file mode 100644 index f5da69b..0000000 Binary files a/lib/org.eclipse.jface_3.2.1.jar and /dev/null differ diff --git a/lib/swtbinding-20051212111010.jar b/lib/swtbinding-20051212111010.jar deleted file mode 100644 index c19959c..0000000 Binary files a/lib/swtbinding-20051212111010.jar and /dev/null differ diff --git a/src/com/idcanet/vasc/annotations/VascAnnotationParser.java b/src/com/idcanet/vasc/annotations/VascAnnotationParser.java new file mode 100644 index 0000000..8e1361b --- /dev/null +++ b/src/com/idcanet/vasc/annotations/VascAnnotationParser.java @@ -0,0 +1,204 @@ +/* + * Copyright 2004-2006 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.annotations; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Parses the Vasc annotations + * + * @author Willem Cazander + * @version 1.0 May 27, 2006 + */ +public class VascAnnotationParser { + + /** Determens if no when no annotation is found null will return or default key */ + private Boolean noAnnotationNullReturn = null; + + private Logger logger = null; + + /** + * Creates an VascAnnotationParser + */ + public VascAnnotationParser() { + setNoAnnotationNullReturn(false); + logger = Logger.getLogger(VascAnnotationParser.class.getName()); + } + + /** + * Determens if no when no annotation is found null will return or default key + * default is false + * @param noAnnotationNullReturn + */ + public VascAnnotationParser(boolean noAnnotationNullReturn) { + setNoAnnotationNullReturn(noAnnotationNullReturn); + } + + /** + * Gets the key of the VascToolTip key for the property of the class + * @param beanClass The class to search for the property + * @param property The property for the ToolTip + * @return The i18n key for an ToolTip + */ + public String getVascToolTipKey(Class beanClass,String property) { + return (String)getValue(beanClass,VascToolTip.class,property); + } + + public String getVascToolTipKey(Class beanClass) { + return (String)getValue(beanClass,VascToolTip.class,null); + } + + /** + * Gets the key of the VascName key for the property of the class + * @param beanClass The class to search for the property + * @param property The property for the Labe + * @return The i18n key for an Label + */ + public String getVascNameKey(Class beanClass,String property) { + return (String)getValue(beanClass,VascName.class,property); + } + + public String getVascLabelKey(Class beanClass) { + return (String)getValue(beanClass,VascName.class,null); + } + + /** + * No oop code here...refactor at some point in time + * + * + * @param beanClass + * @param property + * @param annotationType + * @return + */ + private Object getValue(Class beanClass,Class annotationType,String property) { + if(beanClass==null) { throw new NullPointerException("beanClass may not be null"); } + if(annotationType==null){ throw new NullPointerException("annotationType may not be null"); } + + Object result = null; + if(property==null) { + result = doAnnotation(beanClass.getAnnotation(annotationType)); + if(result!=null) { + return result; + } + if (noAnnotationNullReturn) { + return null; + } + return beanClass.getName()+"."+annotationType.getSimpleName(); + } + + String propRest = null; + int index = property.indexOf("."); + if(index>0) { + propRest = property.substring(index+1); + property = property.substring(0,index); + logger.finest("slit property into: '"+propRest+"' and '"+property+"'"); + } + + for(Method method:beanClass.getMethods()) { + if(method.getName().equalsIgnoreCase("get"+property)==false) { //a bit durty + continue; + } + //logger.finer("Found property: "+property); + VascModelReference mt = method.getAnnotation(VascModelReference.class); + if(mt!=null) { + Class typeClass = mt.type(); + if(Object.class==mt.type()) { + typeClass = method.getReturnType(); + //return returnType.getName()+"."+annotationType.toString(); + } + + // recursif function: + return getValue(typeClass,annotationType,propRest); + } + result = doAnnotation(method.getAnnotation(annotationType)); + if(result!=null) { + return result; + } + if (noAnnotationNullReturn) { + return null; + } + break; // return default + } + return beanClass.getName()+"."+property+"."+annotationType.getSimpleName(); + } + + private Object doAnnotation(Annotation a) { + + if (a.equals(VascName.class)) { + VascName l = (VascName)a; + if("".equals(l.key()) | "null".equals(l.key())) { + return null; + } + return l.key(); + } + if (a.equals(VascToolTip.class)) { + VascToolTip t = (VascToolTip)a; + if("".equals(t.key()) | "null".equals(t.key())) { + return null; + } + return t.key(); + } + if (a.equals(VascHelpId.class)) { + VascHelpId h = (VascHelpId)a; + if("".equals(h.helpId()) | "null".equals(h.helpId())) { + return null; + } + return h.helpId(); + } + if (a.equals(VascDefaultValue.class)) { + VascDefaultValue v = (VascDefaultValue)a; + if (v.defaultValue()==null) { + return null; // error ?? + } + try { + return v.defaultValue().newInstance(); + } catch (Exception e) { + logger.log(Level.WARNING,e.getMessage(),e); + } + } + return null; + } + + /** + * default is false + * @return Returns the noAnnotationNullReturn. + */ + public Boolean getNoAnnotationNullReturn() { + return noAnnotationNullReturn; + } + + /** + * @param noAnnotationNullReturn The noAnnotationNullReturn to set. + */ + public void setNoAnnotationNullReturn(Boolean noAnnotationNullReturn) { + this.noAnnotationNullReturn = noAnnotationNullReturn; + } +} \ No newline at end of file diff --git a/src/com/idcanet/vasc/annotations/VascDefaultValue.java b/src/com/idcanet/vasc/annotations/VascDefaultValue.java new file mode 100644 index 0000000..4947135 --- /dev/null +++ b/src/com/idcanet/vasc/annotations/VascDefaultValue.java @@ -0,0 +1,49 @@ +/* + * Copyright 2004-2006 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.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +/** + * Sets the defaultValue + * + * @author Willem Cazander + * @version 1.0 Mar 28, 2007 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD,ElementType.TYPE}) +public @interface VascDefaultValue { + + /** + * The defaultValue of the method + */ + Class defaultValue(); +} \ No newline at end of file diff --git a/src/com/idcanet/vasc/annotations/VascHelpId.java b/src/com/idcanet/vasc/annotations/VascHelpId.java new file mode 100644 index 0000000..a1659d9 --- /dev/null +++ b/src/com/idcanet/vasc/annotations/VascHelpId.java @@ -0,0 +1,49 @@ +/* + * Copyright 2004-2006 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.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +/** + * Sets the helpId + * + * @author Willem Cazander + * @version 1.0 Mar 28, 2007 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD,ElementType.TYPE}) +public @interface VascHelpId { + + /** + * The defaultValue of the method + */ + String helpId() default "null"; +} \ No newline at end of file diff --git a/src/com/idcanet/vasc/annotations/VascModelReference.java b/src/com/idcanet/vasc/annotations/VascModelReference.java new file mode 100644 index 0000000..c707ba1 --- /dev/null +++ b/src/com/idcanet/vasc/annotations/VascModelReference.java @@ -0,0 +1,46 @@ +/* + * Copyright 2004-2006 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.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +/** + * When plased on a getter is will redirect the label and tooltip text to the type of the return type + * + * @author Willem Cazander + * @version 1.0 May 27, 2006 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface VascModelReference { + + Class type() default Object.class; +} \ No newline at end of file diff --git a/src/com/idcanet/vasc/annotations/VascName.java b/src/com/idcanet/vasc/annotations/VascName.java new file mode 100644 index 0000000..99237b6 --- /dev/null +++ b/src/com/idcanet/vasc/annotations/VascName.java @@ -0,0 +1,51 @@ +/* + * Copyright 2004-2006 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.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +/** + * Sets the I18nLabel(non default) an a Class property + * + * @author Willem Cazander + * @version 1.0 May 27, 2006 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD,ElementType.TYPE}) +public @interface VascName { + + /** + * The key of the Label default to "null" + * @see com.idcanet.i18n.I18nAnnotationParser#getI18nLabelKey(Class, String) + * @return The key of the ToolTip + */ + String key() default "null"; +} \ No newline at end of file diff --git a/src/com/idcanet/vasc/annotations/VascToolTip.java b/src/com/idcanet/vasc/annotations/VascToolTip.java new file mode 100644 index 0000000..cf683a6 --- /dev/null +++ b/src/com/idcanet/vasc/annotations/VascToolTip.java @@ -0,0 +1,51 @@ +/* + * Copyright 2004-2006 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.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +/** + * Sets the I18nToolTip(non default) an a Class property + * + * @author Willem Cazander + * @version 1.0 May 27, 2006 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD,ElementType.TYPE}) +public @interface VascToolTip { + + /** + * The key of the ToolTip default to "null" + * @see com.idcanet.i18n.I18nAnnotationParser#getI18nToolTipKey(Class, String) + * @return The key of the ToolTip + */ + String key() default "null"; +} \ No newline at end of file diff --git a/src/com/idcanet/vasc/impl/swing/SwingVascViewRenderer.java b/src/com/idcanet/vasc/impl/swing/SwingVascViewRenderer.java new file mode 100644 index 0000000..2247521 --- /dev/null +++ b/src/com/idcanet/vasc/impl/swing/SwingVascViewRenderer.java @@ -0,0 +1,143 @@ +/* + * 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.swing; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.logging.Logger; + +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableColumn; + +import com.idcanet.vasc.core.VascTable; +import com.idcanet.vasc.core.VascUserOption; +import com.idcanet.vasc.core.VascViewRenderer; +import com.idcanet.vasc.core.actions.RowVascAction; +import com.idcanet.vasc.core.column.VascTableColumn;; + +/** + * + * @author Willem Cazander + * @version 1.0 Mar 21, 2007 + */ +public class SwingVascViewRenderer implements VascViewRenderer { + + private Logger logger = null; + private JComponent parent = null; + private VascTable table = null; + + public SwingVascViewRenderer(JComponent parent) { + logger = Logger.getLogger(SwingVascViewRenderer.class.getName()); + this.parent=parent; + } + + /** + * @see com.idcanet.vasc.core.VascViewRenderer#renderView(com.idcanet.vasc.core.VascTable) + */ + public void renderView(VascTable table) { + this.table=table; + try { + table.setTableData(table.getVascDataSource().executeQuery(table.getQuery())); + } catch (Exception e) { + e.printStackTrace(); + } + + + JPanel topPanel = new JPanel(); + renderHeader(topPanel); + renderBody(topPanel); + renderFooter(topPanel); + parent.add(topPanel); + } + + private void renderHeader(JComponent parent2) { + } + + private void renderBody(JComponent parent2) { + JTable jTable = new JTable(new VascColumnModel()); + + + for(VascTableColumn c:table.getTableColumns()) { + VascJTableColumn t = new VascJTableColumn(); + t.setPreferredWidth(c.getWidth()); + t.setHeaderValue(c.getName()); + + jTable.addColumn(t); + } + + + + JScrollPane scrollPane = new JScrollPane(jTable); + parent2.add(scrollPane); + } + private void renderFooter(JComponent parent2) { + + } + class VascJTableColumn extends TableColumn { + + } + + class VascColumnModel extends AbstractTableModel { + + /** + * @see javax.swing.table.TableModel#getColumnCount() + */ + public int getColumnCount() { + return table.getTableColumns().size(); + } + + /** + * @see javax.swing.table.TableModel#getRowCount() + */ + public int getRowCount() { + if (table.getTableData()==null) { + return 0; + } + return table.getTableData().size(); + } + + /** + * @see javax.swing.table.TableModel#getValueAt(int, int) + */ + public Object getValueAt(int rowIndex, int columnIndex) { + Object bean = table.getTableData().get(rowIndex); + System.out.println("Rending column; "+columnIndex+" bean: "+bean); + VascTableColumn vtc = table.getTableColumns().get(columnIndex); + if (vtc.getColumnRenderer()!=null) { + //do iets + return "RENDER"; + } else { + return ""+vtc.getVascColumnValue().getValue(vtc,bean); + } + } + } +} diff --git a/src/com/idcanet/vasc/impl/swt/SwtVascViewRenderer.java b/src/com/idcanet/vasc/impl/swt/SwtVascViewRenderer.java index e5f607e..fa0cd4a 100644 --- a/src/com/idcanet/vasc/impl/swt/SwtVascViewRenderer.java +++ b/src/com/idcanet/vasc/impl/swt/SwtVascViewRenderer.java @@ -163,8 +163,6 @@ public class SwtVascViewRenderer implements VascViewRenderer { // Set the content and label providers tableViewer.setContentProvider(new ListConverterContentProvider()); tableViewer.setLabelProvider(new DefaultLabelProvider(table)); - //tv.setSorter(new PlayerViewerSorter()); - tableViewer.setInput(table); for(VascTableColumn c:table.getTableColumns()) { TableColumn tc = new TableColumn(table2, SWT.LEFT); @@ -224,22 +222,10 @@ public class SwtVascViewRenderer implements VascViewRenderer { } } logger.fine("Table with columns created: "+table2.getColumnCount()); + + tableViewer.setInput(table); } - /* - private static AbstractColumn[] getTableColumns(VascTable crudTable) { - AbstractColumn[] cols = new AbstractColumn[crudTable.getCrudTableColumns().size()]; - int i=0; - for(VascTableColumn c:crudTable.getTableColumns()) { - AbstractColumn ac = new PropertyColumn(crudTable.i18n(c.getName()),c.getObjectProperty()); - ac.setEditable(false); - ac.setReorderable(true); - ac.setSortable(true); - cols[i]=ac; - i++; - } - return cols; - }*/ public void createFooter(Composite footer) { logger.finest("Creating footer"); diff --git a/tests/META-INF/xtes/tests.xml b/tests/META-INF/xtes/tests.xml index 6e2df4a..eb2fa33 100644 --- a/tests/META-INF/xtes/tests.xml +++ b/tests/META-INF/xtes/tests.xml @@ -2,6 +2,13 @@ + + + LIMIT diff --git a/tests/com/idcanet/vasc/tests/SimpleTest.java b/tests/com/idcanet/vasc/tests/SWTTest.java similarity index 88% rename from tests/com/idcanet/vasc/tests/SimpleTest.java rename to tests/com/idcanet/vasc/tests/SWTTest.java index 279d505..2ebcbe9 100644 --- a/tests/com/idcanet/vasc/tests/SimpleTest.java +++ b/tests/com/idcanet/vasc/tests/SWTTest.java @@ -51,7 +51,7 @@ import junit.framework.TestCase; * @author Willem Cazander * @version 1.0 Jul 24, 2006 */ -public class SimpleTest extends TestCase { +public class SWTTest extends TestCase { public void setUp() throws Exception { // enable all logs @@ -88,7 +88,7 @@ public class SimpleTest extends TestCase { table.setToolTip("tooltip text"); table.setDescription("en de omscheiving"); table.setHelpId("someKey"); - table.setVascDataSource(new Serv5HibernateVascDataSource("flowstats")); + table.setVascDataSource(new TestModelVascDataSource()); table.setVascTextValue(new DefaultVascTextValue()); table.setVascViewRenderer(render); table.setQuery(query); @@ -102,9 +102,20 @@ public class SimpleTest extends TestCase { column.setWidth(200); //column.setVascColumnEditor(vascColumnEditor); //column.setVascColumnRenderer(vascColumnRenderer); - column.setVascColumnValue(new BeanPropertyVascColumnValue("someValue")); + column.setVascColumnValue(new BeanPropertyVascColumnValue("name")); table.addTableColumns(column); + column = new VascTableColumn(); + column.setName("test2"); + column.setToolTip("tooltip2"); + column.setDefaultValue("DEFF2FFFF"); + column.setHelpId("helpColum2nKey"); + column.setWidth(200); + //column.setVascColumnEditor(vascColumnEditor); + //column.setVascColumnRenderer(vascColumnRenderer); + column.setVascColumnValue(new BeanPropertyVascColumnValue("description")); + table.addTableColumns(column); + // render render.renderView(table); diff --git a/tests/com/idcanet/vasc/tests/SwingTest.java b/tests/com/idcanet/vasc/tests/SwingTest.java new file mode 100644 index 0000000..3e00d93 --- /dev/null +++ b/tests/com/idcanet/vasc/tests/SwingTest.java @@ -0,0 +1,131 @@ +/* + * Copyright 2004-2006 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.tests; + +import java.io.InputStream; +import java.util.logging.LogManager; + +import javax.swing.JFrame; + +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; + +import com.idcanet.vasc.core.VascTable; +import com.idcanet.vasc.core.column.VascTableColumn; +import com.idcanet.vasc.impl.BeanVascRecordCreator; +import com.idcanet.vasc.impl.DefaultVascTextValue; +import com.idcanet.vasc.impl.column.BeanPropertyVascColumnValue; +import com.idcanet.vasc.impl.serv5.Serv5HibernateVascDataSource; +import com.idcanet.vasc.impl.swing.SwingVascViewRenderer; +import com.idcanet.vasc.impl.swt.SwtVascViewRenderer; +import com.idcanet.xtes.core.TemplateStore; +import com.idcanet.xtes.core.XTESParser; +import com.idcanet.xtes.xpql.query.Query; + +import junit.framework.TestCase; + +/** + * Tests a simple x4o xml language. + * + * @author Willem Cazander + * @version 1.0 Jul 24, 2006 + */ +public class SwingTest extends TestCase { + + public void setUp() throws Exception { + // enable all logs + InputStream loggingProperties = this.getClass().getResourceAsStream("/META-INF/logging.properties"); + LogManager.getLogManager().readConfiguration( loggingProperties ); + loggingProperties.close(); + + // load xtes queries + } + + public void tearDown() throws Exception { + } + + public void testAll() throws Exception { + + // get GUI + JFrame frame = new JFrame(); + frame.setTitle("Hello, world!"); + frame.setDefaultLookAndFeelDecorated(false); + frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + + frame.pack(); + frame.setBounds(150,150,700,500); + + + // define query + XTESParser parser = new XTESParser(); + parser.parseResource("/META-INF/xtes/tests.xml"); + TemplateStore store = XTESParser.getTemplateStore(parser.getElementContext()); + Query query = store.getQuery("testUsers2"); + + // define redering + SwingVascViewRenderer render = new SwingVascViewRenderer(frame.getRootPane()); + + // config table + VascTable table = new VascTable(); + table.setName("Testje"); + table.setHeaderName("TableHeader"); + table.setToolTip("tooltip text"); + table.setDescription("en de omscheiving"); + table.setHelpId("someKey"); + table.setVascDataSource(new TestModelVascDataSource()); + table.setVascTextValue(new DefaultVascTextValue()); + table.setVascViewRenderer(render); + table.setQuery(query); + table.setVascRecordCreator(new BeanVascRecordCreator()); + + VascTableColumn column = new VascTableColumn(); + column.setName("test"); + column.setToolTip("tooltip"); + column.setDefaultValue("DEFFFFFF"); + column.setHelpId("helpColumnKey"); + column.setWidth(200); + //column.setVascColumnEditor(vascColumnEditor); + //column.setVascColumnRenderer(vascColumnRenderer); + column.setVascColumnValue(new BeanPropertyVascColumnValue("name")); + table.addTableColumns(column); + + // render + render.renderView(table); + + // view + frame.getContentPane().validate(); + frame.setVisible(true); + + String test="34"; + while (true) { + test+=test+"34566"; + if(test.length()>1000000) { + break; + } + } + } +} \ No newline at end of file diff --git a/tests/com/idcanet/vasc/tests/TestModelVascDataSource.java b/tests/com/idcanet/vasc/tests/TestModelVascDataSource.java new file mode 100644 index 0000000..3606280 --- /dev/null +++ b/tests/com/idcanet/vasc/tests/TestModelVascDataSource.java @@ -0,0 +1,75 @@ +/* + * 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.tests; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import com.idcanet.vasc.core.VascDataSource; +import com.idcanet.vasc.tests.models.TestModel; + +/** + * + * @author Willem Cazander + * @version 1.0 Mar 21, 2007 + */ +public class TestModelVascDataSource implements VascDataSource { + + private List testModels = null; + + public TestModelVascDataSource() { + testModels = new ArrayList(2); + + TestModel t = new TestModel(); + t.setDate(new Date()); + t.setDescription("yoyo test"); + t.setName("this Name"); + t.setPrice(34.1f); + testModels.add(t); + + t = new TestModel(); + t.setDate(new Date()); + t.setDescription("Model2 test"); + t.setName("BeanSourde"); + t.setPrice(19.2f); + testModels.add(t); + } + public TestModelVascDataSource(List testModels) { + this.testModels=testModels; + } + + public List executeQuery(com.idcanet.xtes.xpql.query.Query query) throws Exception { + return testModels; + } + + public void persist(Object object) throws Exception { + + } + + +} \ No newline at end of file diff --git a/tests/com/idcanet/vasc/tests/models/TestModel.java b/tests/com/idcanet/vasc/tests/models/TestModel.java new file mode 100644 index 0000000..212552b --- /dev/null +++ b/tests/com/idcanet/vasc/tests/models/TestModel.java @@ -0,0 +1,106 @@ + +/* + * Copyright 2004-2006 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.tests.models; + +import java.util.Date; + +import com.idcanet.vasc.annotations.VascName; +import com.idcanet.vasc.annotations.VascToolTip; + +/** + * TestModel + * + * + * @author Willem Cazander + * @version 1.0 Mar 28, 2007 + */ +public class TestModel { + + private String name = null; + private String description = null; + private Float price = null; + private Date date = null; + + /** + * @return the date + */ + public Date getDate() { + return date; + } + + /** + * @param date the date to set + */ + public void setDate(Date date) { + this.date = date; + } + + /** + * @return the description + */ + @VascName(key="omscheiving") + @VascToolTip(key="De omscheiving") + public String getDescription() { + return description; + } + + /** + * @param description the description to set + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the price + */ + public Float getPrice() { + return price; + } + + /** + * @param price the price to set + */ + public void setPrice(Float price) { + this.price = price; + } +} \ No newline at end of file