2
Fork 0

[svn r343] WIP3

This commit is contained in:
willemc 2008-09-15 00:00:09 +02:00
parent 62f7881380
commit 4643057b7f
35 changed files with 1166 additions and 239 deletions

View file

@ -64,41 +64,28 @@ import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import com.idcanet.fff.SwingImageHelper;
import com.idcanet.vasc.core.AbstractVascFrontend;
import com.idcanet.vasc.core.VascEntry;
import com.idcanet.vasc.core.VascFrontend;
import com.idcanet.vasc.core.VascEntryField;
import com.idcanet.vasc.core.actions.GlobalVascAction;
import com.idcanet.vasc.core.actions.RowVascAction;
import com.idcanet.vasc.core.entry.VascEntryExporter;
/**
*
* @author Willem Cazander
* @version 1.0 Mar 21, 2007
*/
public class SwtVascFrontend implements VascFrontend {
public class SwtVascFrontend extends AbstractVascFrontend {
private Logger logger = null;
private Composite parent = null;
private VascEntry table = null;
public SwtVascFrontend(Composite parent) {
logger = Logger.getLogger(SwtVascFrontend.class.getName());
this.parent=parent;
}
public void initTable(VascEntry table) throws Exception {
if (table.VascEntry()==null) {
table.setVascViewRenderer(this);
} else {
if (table.getVascViewRenderer()!=this) {
throw new IllegalArgumentException("VascTable has already a differtent VascViewRenderer attected");
}
}
table.getVascTableController().finalizeVascColumns(table);
table.getVascTableController().finalizeVascTable(table);
table.getVascTableController().refreshData(table);
this.table=table;
}
private static final String[] FILTER_NAMES = {
"All Files (*.*)",
"Comma Separated Values Files (*.csv)",
@ -107,11 +94,11 @@ public class SwtVascFrontend implements VascFrontend {
/** These filter extensions are used to filter which files are displayed. */
private static final String[] FILTER_EXTS = { "*.*","*.csv","*.xls" };
public void renderExport(VascDataExporter exporter) throws Exception {
public void renderExport(VascEntryExporter 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");
dlg.setFileName(entry.getHeaderName()+".csv");
String fileName = dlg.open();
logger.fine("FileName: "+fileName);
if (fileName == null) {
@ -119,7 +106,7 @@ public class SwtVascFrontend implements VascFrontend {
}
OutputStream out = new FileOutputStream(fileName);
try {
exporter.doExport(out, table);
exporter.doExport(out, entry);
} 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);
@ -133,25 +120,27 @@ public class SwtVascFrontend implements VascFrontend {
public void renderEdit(Object object) throws Exception {
logger.fine("Rending Edit View");
table.getVascTableController().initEditObject(table, object);
entry.getVascFrontendData().getVascFrontendHelper().initEditObject(entry, object);
SwtVascEditDialog dialog = new SwtVascEditDialog(Display.getCurrent().getActiveShell(),table,object,"Vasc Edit","Edit");
SwtVascEditDialog dialog = new SwtVascEditDialog(Display.getCurrent().getActiveShell(),object,"Vasc Edit","Edit");
Object result = dialog.open();
if(result==null) {
return;
}
/*
try {
result = table.getVascDataSource().merge(object);
result = entry.getVascDataSource().merge(object);
//table.getVascTableController().fireModelUpdateListeners(result);
} finally {
//TODO: or merge into table == faster
table.getVascTableController().refreshData(table);
entry.getVascTableController().refreshData(entry);
}
*/
}
public ImageDescriptor getImageDescriptor(String path) {
try {
path = table.getVascTextValue().getTextValue(path);
path = i18n(path);
logger.fine("Loading image: "+path);
@ -191,7 +180,7 @@ public class SwtVascFrontend implements VascFrontend {
private Object result = null;
private Object bean = null;
public SwtVascEditDialog (Shell parent,VascTable table,Object bean,String title,String headerText) {
public SwtVascEditDialog (Shell parent,Object bean,String title,String headerText) {
super (parent, 0);
///this.headerText = headerText;
this.title = title;
@ -249,32 +238,31 @@ public class SwtVascFrontend implements VascFrontend {
body.setLayout(new GridLayout(2, true));
body.setLayoutData(new GridData(GridData.FILL_BOTH));
for(VascTableColumn c:table.getTableColumns()) {
for(VascEntryField c:entry.getVascEntryFields()) {
Label l = new Label(body, SWT.WRAP);
l.setText(c.getName());
if(c.getToolTip()!=null) {
l.setToolTipText(c.getToolTip());
if(c.getDescription()!=null) {
l.setToolTipText(c.getDescription());
}
try {
table.getVascTableController().initEditObjectColumn(c, bean);
entry.getVascFrontendData().getVascFrontendHelper().initEditObjectColumn(c, bean);
//if(c.getVascColumnEditor()==null) {
Label valueLabel = new Label(body, SWT.WRAP);
valueLabel.setText(""+c.getVascColumnValue().getValue(c, bean));
c.setColumnEditor(valueLabel);
valueLabel.setText(""+c.getVascEntryFieldValue().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);
logger.log(Level.WARNING,"Error making column editor: '"+c.getVascEntryFieldValue()+"' error: "+e.getMessage(),e);
}
/*
if(c.getColumnEditor() instanceof Control) {
Control editor = (Control)c.getColumnEditor();
GridData gridData = new GridData();
@ -284,6 +272,7 @@ public class SwtVascFrontend implements VascFrontend {
gridData.verticalAlignment = GridData.FILL;
editor.setLayoutData(gridData);
}
*/
}
// create some spaceing , should replace by seperator
@ -292,8 +281,8 @@ public class SwtVascFrontend implements VascFrontend {
Button saveButton = new Button(body, SWT.NONE);
saveButton.setImage(getImageDescriptor("vasc.dialog.save.image").createImage());
saveButton.setText(table.getVascTextValue().getTextValue("vasc.dialog.save.name"));
saveButton.setToolTipText(table.getVascTextValue().getTextValue("vasc.dialog.save.tooltip"));
saveButton.setText(i18n("vasc.dialog.save.name"));
saveButton.setToolTipText(i18n("vasc.dialog.save.tooltip"));
saveButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
//if(hasRecordError()) {
@ -305,8 +294,8 @@ public class SwtVascFrontend implements VascFrontend {
});
Button cancelButton = new Button(body, SWT.NONE);
cancelButton.setImage(getImageDescriptor("vasc.dialog.cancel.image").createImage());
cancelButton.setText(table.getVascTextValue().getTextValue("vasc.dialog.cancel.name"));
cancelButton.setToolTipText(table.getVascTextValue().getTextValue("vasc.dialog.cancel.tooltip"));
cancelButton.setText(i18n("vasc.dialog.cancel.name"));
cancelButton.setToolTipText(i18n("vasc.dialog.cancel.tooltip"));
cancelButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
result = null;
@ -316,21 +305,21 @@ public class SwtVascFrontend implements VascFrontend {
}
}
public Object defaultColumnEditor(VascTableColumn column,Object bean,Object gui) throws Exception {
public Object defaultColumnEditor(VascEntryField 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));
text.setText(""+column.getVascEntryFieldValue().getValue(column, bean));
return text;
}
class TextListener extends SelectionAdapter {
private VascTableColumn column = null;
private VascEntryField column = null;
private Object bean = null;
public TextListener(VascTableColumn column,Object bean) {
public TextListener(VascEntryField column,Object bean) {
this.column=column;
this.bean=bean;
}
@ -343,18 +332,13 @@ public class SwtVascFrontend implements VascFrontend {
Object value = e.data;
logger.finer("Setting value: "+value);
try {
column.getVascColumnValue().setValue(column, bean, value);
column.getVascEntryFieldValue().setValue(column, bean, value);
} catch (Exception ee) {
ee.printStackTrace();
}
}
}
public Object defaultColumnRenderer(VascTableColumn column,Object gui) throws Exception {
return null;
}
public void renderView() throws Exception {
GridLayout layout = new GridLayout();
@ -419,10 +403,10 @@ public class SwtVascFrontend implements VascFrontend {
headerOptions.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
ToolBar toolBar = new ToolBar(headerBar, SWT.NONE);
for (GlobalVascAction action:table.getGlobalActions()) {
for (GlobalVascAction action:entry.getGlobalActions()) {
ToolItem item = new ToolItem(toolBar, SWT.PUSH);
item.setText(table.getVascTextValue().getTextValue(action.getName()));
item.setToolTipText(table.getVascTextValue().getTextValue(action.getToolTip()));
item.setText(i18n(action.getName()));
item.setToolTipText(i18n(action.getToolTip()));
if (action.getImage()!=null) {
item.setImage(getImageDescriptor(action.getImage()).createImage());
}
@ -432,12 +416,12 @@ public class SwtVascFrontend implements VascFrontend {
Color c = new Color(header.getDisplay(),255,255,255);
headerName.setBackground(c);
if(table.getHeaderName()!=null) {
if(entry.getHeaderName()!=null) {
Font headerFont = new Font(header.getDisplay(), "verdana", 16, SWT.BOLD);
Label l = new Label(headerName, SWT.CENTER);
l.setImage(getImageDescriptor(table.getHeaderImage()).createImage());
l.setImage(getImageDescriptor(entry.getHeaderImage()).createImage());
l.setFont(headerFont);
l.setText(table.getVascTextValue().getTextValue(table.getHeaderName()));
l.setText(i18n(entry.getHeaderName()));
l.setBackground(c);
}
@ -474,9 +458,9 @@ public class SwtVascFrontend implements VascFrontend {
public void widgetSelected(SelectionEvent event) {
logger.fine("Global Action");
try {
action.doGlobalAction(table);
action.doGlobalAction(entry);
} catch (Exception e) {
table.getVascTableController().handleException(e, table);
entry.getVascFrontendData().getVascFrontendHelper().handleException(e, entry);
}
}
}
@ -512,14 +496,14 @@ public class SwtVascFrontend implements VascFrontend {
public void widgetSelected(SelectionEvent e) {
Object data = e.item.getData();
logger.fine("Slecting data: "+data);
table.setSelectedObject(data);
entry.getVascFrontendData().setEntryDataObject(data);
}
});
// Set the content and label providers
tableViewer.setContentProvider(new ListConverterContentProvider());
tableViewer.setLabelProvider(new DefaultLabelProvider(table));
tableViewer.setLabelProvider(new DefaultLabelProvider(entry));
//TODO: add renderer support
//Add sort indicator and sort data when column selected
@ -556,10 +540,10 @@ public class SwtVascFrontend implements VascFrontend {
for(VascTableColumn c:table.getTableColumns()) {
for(VascEntryField c:entry.getVascEntryFields()) {
TableColumn tc = new TableColumn(table2, SWT.LEFT);
tc.setText(c.getName());
tc.setToolTipText(c.getToolTip());
tc.setToolTipText(c.getDescription());
if (c.getImage()!=null) {
tc.setImage(getImageDescriptor(c.getImage()).createImage());
}
@ -568,14 +552,11 @@ public class SwtVascFrontend implements VascFrontend {
tc.setResizable(true);
}
int totalWidth = table.getVascTableController().getTotalColumnsWidth(table);
int totalWidth = entry.getVascFrontendData().getVascFrontendHelper().getTotalColumnsWidth(entry);
logger.finer("Total size: "+totalWidth);
TableColumn[] columns = table2.getColumns();
for (int i = 0; i < columns.length; i++) {
Integer cWidth = table.getTableColumns().get(i).getWidth();
Integer cWidth = entry.getVascEntryFields().get(i).getSizeEdit();
if (cWidth==null) {
break;
}
@ -586,16 +567,16 @@ public class SwtVascFrontend implements VascFrontend {
}
logger.fine("Table with columns created: "+table2.getColumnCount());
tableViewer.setInput(table);
tableViewer.setInput(entry);
}
public void createFooter(Composite footer) {
logger.finest("Creating footer");
for(RowVascAction action:table.getRowActions()) {
for(RowVascAction action:entry.getRowActions()) {
Button actionButton = new Button(footer, SWT.NONE);
actionButton.setText(table.getVascTextValue().getTextValue(action.getName()));
actionButton.setToolTipText(table.getVascTextValue().getTextValue(action.getToolTip()));
actionButton.setText(i18n(action.getName()));
actionButton.setToolTipText(i18n(action.getToolTip()));
if (action.getImage()!=null) {
actionButton.setImage(getImageDescriptor(action.getImage()).createImage());
}
@ -617,9 +598,9 @@ public class SwtVascFrontend implements VascFrontend {
public void widgetSelected(SelectionEvent event) {
logger.fine("Row Action");
try {
action.doRowAction(table, table.getSelectedObject());
action.doRowAction(entry, entry.getVascFrontendData().getEntryDataObject());
} catch (Exception e) {
table.getVascTableController().handleException(e, table);
entry.getVascFrontendData().getVascFrontendHelper().handleException(e, entry);
}
}
}
@ -633,10 +614,10 @@ public class SwtVascFrontend implements VascFrontend {
class DefaultLabelProvider implements ITableLabelProvider {
private VascTable table = null;
private VascEntry entry = null;
public DefaultLabelProvider(VascTable table) {
this.table=table;
public DefaultLabelProvider(VascEntry entry) {
this.entry=entry;
}
/**
@ -650,17 +631,17 @@ public class SwtVascFrontend implements VascFrontend {
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
*/
public String getColumnText(Object bean, int columnNumber) {
VascTableColumn vtc = table.getTableColumns().get(columnNumber);
if (vtc.getVascColumnRenderer()==null) {
VascEntryField vtc = entry.getVascEntryFields().get(columnNumber);
//if (vtc.getVascColumnRenderer()==null) {
try {
return ""+vtc.getVascColumnValue().getValue(vtc,bean);
return ""+vtc.getVascEntryFieldValue().getValue(vtc,bean);
} catch (Exception e) {
logger.log(Level.WARNING,"Error in get value: '"+vtc.getVascColumnValue()+"' error: "+e.getMessage(),e);
logger.log(Level.WARNING,"Error in get value: '"+vtc.getVascEntryFieldValue()+"' error: "+e.getMessage(),e);
return "Err";
}
}
//}
// see custem column renderer, so this code will never be called
return "CUSTEM_RENDER";
//return "CUSTEM_RENDER";
}
/**
@ -696,7 +677,7 @@ public class SwtVascFrontend implements VascFrontend {
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
public Object[] getElements(Object obj) {
return ((VascTable)obj).getTableData().toArray();
return ((VascEntry)obj).getVascFrontendData().getEntryDataList().toArray();
}
/**