2
Fork 0

[svn r251] fixed annotations , made export stuff work , made edit with simple text element work

This commit is contained in:
willemc 2007-05-19 20:02:27 +02:00
parent 1c47fbffa3
commit 4f25dd082d
21 changed files with 438 additions and 64 deletions

View file

@ -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";