From 509dcae57fd4cb1e5aaeeb725f1ad54daf35f0c3 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 24 May 2011 14:03:10 +0000 Subject: [PATCH] Table editing GUI suggestions SVN: 21470 --- .../application/IGenericImageBundle.java | 3 ++ .../web/client/application/editable.gif | Bin 0 -> 952 bytes .../ui/grid/AbstractBrowserGrid.java | 21 +++++++++ .../ui/grid/ColumnDefsAndConfigs.java | 40 +++++++++++++++++- .../application/ui/grid/ExtendedGridView.java | 2 - 5 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/editable.gif diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IGenericImageBundle.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IGenericImageBundle.java index 06713418a4a..10d99e1d660 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IGenericImageBundle.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IGenericImageBundle.java @@ -52,5 +52,8 @@ public interface IGenericImageBundle extends ClientBundle */ @Source("home.png") public ImageResource getHomeIcon(); + + @Source("editable.gif") + public ImageResource getEditableIcon(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/editable.gif b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/editable.gif new file mode 100644 index 0000000000000000000000000000000000000000..502700a4f5ea1da4c584239342415af6414cb6bd GIT binary patch literal 952 zcmV;p14sNvNk%w1VGsZi0QUd@0000G2oMkx5E~;MAQ&JZAP_J#5FsQZFElzZC?GH@ zG%+$WJUT}pIA9<&a5+IcDM4r=KyffgU_dx9T}B#EP%uM7L`h9kO;$`vQ&~_*Ku}0f zQBqSvS8`KaWKDHTQDRV6a93VtYg}!0U|3*bepGO1P-SLiZg*&Qer|MhbRal@AV7d1 zNRTi{fHY8pF;kH+SfD^ykU&_VKwyAHVV6>Am`7%#KxME@aH3dttWa>UZFhuVaFB3! zhG2N0V0f@VXuwc#z)*P5V0gegf;T_WcR+?bMT0_5oJdiWOi;X8SE+kokyvAkVPuJR zYnf<gqgr6FR&1<gYrkN5rDk`oa(ujUO4Vmw(`-QhKx*4|bjE0Y%X4?uc3+5}On|LN zg0NqyuXllldWM!}fUjqRw{D8Rb%msMjJapLyi=LRP=w%Jr^sHg(`1FhaEQQum&kmV z(`lu_YqrU6!-8zlkaOOGan_n`#I#`8rhmn~deN_S$;+2*HIQ*PyLT~%YEu6I0FZ!S zguQ;Iig2KqaI}|dpr}x=uuz7@b&<z<$dM_>mRr%5PS2%N*rr+Tw|W2n0KmXdz`$_o z!f5o^Yxdz@;O21o<6-#acJT0UgNB8Uk&c9uo|cxDikPT@le3VRtCyyTnxUzerMIA< zfUK>psJo}Vy}f{#z?G-Om#fm6ve})u=%cQ|sJ6+axYVM%;EKb9gV=$R%!!cGgqzlq zoZFRz%e9KzyN&9doZ`Kt$cUlWiKW(+wcePl*QT%4y|BozwBDew*S(_Ro2T!wtnjtF z;ia_iwT{8bi_6!L&D)sO*{i_csMpJ;+1Ihd*|gflwcggL?#a65!?)<v$f}9YxQWKK zk<zY+*|dk)z=+t!lhD|Jz{sG&+ojORpv~v6&F8b$?6=(TzU|G8?8lno)tmOuru5pl z@Zf;@=%WAdu*Js3&C=4@+RNA2*uc*2!O-Wx(D2IX(9`YC*Y4EX^26oy#`NIA{p{TE z_`vAs=<)IKA^8LW003G5EC2ui01yBW000P;0JR7lNU)&6g9YO#T*y%2je&9gNt{S= z-a~;A=UJ?GqaMeO7qw*U=#gYei2rWP^H{Q8j&0l^Vf?qTWxR9f_^oRslBUIt@6xry zsg7IEl`P>2)no~h(VjP=-XOK~Ql&#EHP(CQt(_*T+d@W+N-A5ouayc}gvj#HK1Ylm aVbds9>K}EH00oj7k{|^?jkFyM2mm`$_5v&b literal 0 HcmV?d00001 diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java index 2291b301327..a5643e9982d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java @@ -40,6 +40,7 @@ import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.GridEvent; import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.MenuEvent; import com.extjs.gxt.ui.client.event.SelectionChangedEvent; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.store.ListStore; @@ -63,6 +64,7 @@ import com.extjs.gxt.ui.client.widget.layout.FitLayout; import com.extjs.gxt.ui.client.widget.layout.RowData; import com.extjs.gxt.ui.client.widget.layout.RowLayout; import com.extjs.gxt.ui.client.widget.menu.Menu; +import com.extjs.gxt.ui.client.widget.menu.MenuItem; import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar; import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem; import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; @@ -289,6 +291,25 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod { menu.remove(menu.getItem(2)); } + final int columnIndex = ge.getColIndex(); + ColumnConfig column = ge.getGrid().getColumnModel().getColumn(columnIndex); + final String dataIndex = column.getDataIndex(); + if (column.getEditor() != null) + { + MenuItem item = new MenuItem("edit"); + item.addSelectionListener(new SelectionListener<MenuEvent>() + { + @Override + public void componentSelected(MenuEvent ce) + { + List<M> selectedItems = + grid.getSelectionModel().getSelectedItems(); + MessageBox.info("edit", "edit column '" + dataIndex + "' " + + columnIndex + "\n" + selectedItems, null); + } + }); + menu.add(item); + } } }); if (viewContext.getModel().isEmbeddedMode()) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java index b28d19015c9..718ea33e72c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java @@ -22,11 +22,24 @@ import java.util.List; import java.util.Set; import com.extjs.gxt.ui.client.Style.HorizontalAlignment; +import com.extjs.gxt.ui.client.event.ButtonEvent; +import com.extjs.gxt.ui.client.event.SelectionListener; +import com.extjs.gxt.ui.client.util.Margins; +import com.extjs.gxt.ui.client.widget.Label; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.form.TextField; import com.extjs.gxt.ui.client.widget.grid.CellEditor; import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; +import com.extjs.gxt.ui.client.widget.layout.HBoxLayout; +import com.extjs.gxt.ui.client.widget.layout.HBoxLayout.HBoxLayoutAlign; +import com.extjs.gxt.ui.client.widget.layout.HBoxLayoutData; +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.AbstractImagePrototype; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.IGenericImageBundle; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI; @@ -38,6 +51,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition; */ public class ColumnDefsAndConfigs<T> { + private static final IGenericImageBundle IMAGE_BUNDLE = GWT.<IGenericImageBundle> create(IGenericImageBundle.class); + private final List<ColumnConfig> columnConfigs; private final Set<IColumnDefinition<T>> columnDefs; @@ -102,7 +117,8 @@ public class ColumnDefsAndConfigs<T> final ColumnConfig columnConfig = new ColumnConfig(); columnConfig.setSortable(true); columnConfig.setId(column.getIdentifier()); - columnConfig.setHeader(column.getHeader()); + final String headerTitle = column.getHeader(); + columnConfig.setHeader(headerTitle); if (column.isNumeric()) { columnConfig.setAlignment(HorizontalAlignment.RIGHT); @@ -113,8 +129,11 @@ public class ColumnDefsAndConfigs<T> } columnConfig.setWidth(column.getWidth()); columnConfig.setHidden(column.isHidden()); + String toolTip = "[Click] to sort, [SHIFT+Click] to adjust the width, " + + "[Drag & Drop] to change order."; if (column.isEditable()) { + toolTip += " This is an editibale column. Just double-click on a cell or on the header icon."; CellEditor editor = new CellEditor(new TextField<String>() { @Override @@ -124,7 +143,26 @@ public class ColumnDefsAndConfigs<T> } }); columnConfig.setEditor(editor); + LayoutContainer header = new LayoutContainer(); + HBoxLayout layout = new HBoxLayout(); + layout.setHBoxLayoutAlign(HBoxLayoutAlign.TOP); + header.setLayout(layout); + AbstractImagePrototype editIcon = + AbstractImagePrototype.create(IMAGE_BUNDLE.getEditableIcon()); + Button editButton = new Button("", editIcon); + editButton.addSelectionListener(new SelectionListener<ButtonEvent>() + { + @Override + public void componentSelected(ButtonEvent ce) + { + MessageBox.info("Edit", "Editing for column " + headerTitle + " not yet implemented.", null); + } + }); + header.add(new Label(headerTitle), new HBoxLayoutData(new Margins(0, 0, 0, 0))); + header.add(editButton, new HBoxLayoutData(new Margins(0, 0, 0, 3))); + columnConfig.setWidget(header, headerTitle); } + columnConfig.setToolTip(toolTip); return columnConfig; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ExtendedGridView.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ExtendedGridView.java index 5b306bdc335..65802c784f1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ExtendedGridView.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ExtendedGridView.java @@ -67,8 +67,6 @@ class ExtendedGridView extends GridView }; header.setSplitterWidth(splitterWidth); header.setMinColumnWidth(grid.getMinColumnWidth()); - header.setTitle("[Click] to sort, [SHIFT+Click] to adjust the width, " - + "[Drag & Drop] to change order"); return header; } -- GitLab