List of usage examples for org.eclipse.jface.viewers ColumnLabelProvider getToolTipText
@Override
public String getToolTipText(Object element)
From source file:org.entirej.applicationframework.rwt.renderers.blocks.EJRWTTreeTableRecordBlockRenderer.java
License:Apache License
@Override public void buildGuiComponent(EJRWTEntireJGridPane blockCanvas) { EJFrameworkExtensionProperties appProp = EJCoreProperties.getInstance().getApplicationDefinedProperties(); if (appProp != null) { EJFrameworkExtensionProperties propertyGroup = appProp .getPropertyGroup(EJRWTSingleRecordBlockDefinitionProperties.ACTION_GROUP); if (propertyGroup != null) { addActionKeyinfo(/*from w w w .j ava 2s . c om*/ propertyGroup .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ACTION_QUERY_KEY), EJRWTSingleRecordBlockDefinitionProperties.ACTION_QUERY_KEY); addActionKeyinfo( propertyGroup .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ACTION_INSERT_KEY), EJRWTSingleRecordBlockDefinitionProperties.ACTION_INSERT_KEY); addActionKeyinfo( propertyGroup .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ACTION_UPDATE_KEY), EJRWTSingleRecordBlockDefinitionProperties.ACTION_UPDATE_KEY); addActionKeyinfo( propertyGroup .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ACTION_DELETE_KEY), EJRWTSingleRecordBlockDefinitionProperties.ACTION_DELETE_KEY); addActionKeyinfo( propertyGroup .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ACTION_REFRESH_KEY), EJRWTSingleRecordBlockDefinitionProperties.ACTION_REFRESH_KEY); } } EJBlockProperties blockProperties = _block.getProperties(); EJMainScreenProperties mainScreenProperties = blockProperties.getMainScreenProperties(); GridData gridData = new GridData(GridData.FILL_BOTH); gridData.widthHint = mainScreenProperties.getWidth(); gridData.heightHint = mainScreenProperties.getHeight(); gridData.horizontalSpan = mainScreenProperties.getHorizontalSpan(); gridData.verticalSpan = mainScreenProperties.getVerticalSpan(); gridData.grabExcessHorizontalSpace = mainScreenProperties.canExpandHorizontally(); gridData.grabExcessVerticalSpace = mainScreenProperties.canExpandVertically(); if (gridData.grabExcessHorizontalSpace) { gridData.minimumWidth = mainScreenProperties.getWidth(); } if (gridData.grabExcessVerticalSpace) { gridData.minimumHeight = mainScreenProperties.getHeight(); } _rendererProp = blockProperties.getBlockRendererProperties(); blockCanvas.setLayoutData(gridData); EJFrameworkExtensionProperties sectionProperties = null; if (_rendererProp != null) { sectionProperties = _rendererProp .getPropertyGroup(EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR); } if (sectionProperties != null && sectionProperties.getStringProperty( EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE) != null && !EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE_GROUP .equals(sectionProperties.getStringProperty( EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE))) { int style = ExpandableComposite.TITLE_BAR; String mode = sectionProperties .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE); if (EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE_TWISTIE.equals(mode)) { style = style | ExpandableComposite.TWISTIE; } else if (EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE_TREE_NODE .equals(mode)) { style = style | ExpandableComposite.TREE_NODE; } if (sectionProperties.getBooleanProperty( EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_EXPANDED, true)) { style = style | ExpandableComposite.EXPANDED; } Section section = toolkit.createSection(blockCanvas, style); section.setLayoutData(gridData); String title = sectionProperties .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_TITLE); if (title != null) { section.setText(title); } EJRWTImageRetriever.getGraphicsProvider().rendererSection(section); if (mainScreenProperties.getDisplayFrame()) { Group group = new Group(section, SWT.NONE); group.setData(EJ_RWT.CUSTOM_VARIANT, EJ_RWT.CSS_CV_ITEM_GROUP); group.setLayout(new FillLayout()); group.setLayoutData(gridData); hookKeyListener(group); String frameTitle = mainScreenProperties.getFrameTitle(); if (frameTitle != null && frameTitle.length() > 0) { group.setText(frameTitle); } _mainPane = new EJRWTEntireJGridPane(group, 1); _mainPane.setData(EJ_RWT.CUSTOM_VARIANT, EJ_RWT.CSS_CV_ITEM_GROUP); section.setClient(group); } else { _mainPane = new EJRWTEntireJGridPane(section, 1); _mainPane.setLayoutData(gridData); _mainPane.cleanLayoutHorizontal(); _mainPane.setData(EJ_RWT.CUSTOM_VARIANT, EJ_RWT.CSS_CV_ITEM_GROUP); section.setClient(_mainPane); } final EJFrameworkExtensionPropertyList propertyList = sectionProperties .getPropertyList(EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_ACTIONS); if (propertyList != null && propertyList.getAllListEntries().size() > 0) { ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT); final ToolBar toolbar = toolBarManager.createControl(section); final Cursor handCursor = new Cursor(Display.getCurrent(), SWT.CURSOR_HAND); toolbar.setCursor(handCursor); // Cursor needs to be explicitly disposed toolbar.addDisposeListener(new DisposeListener() { @Override public void widgetDisposed(DisposeEvent e) { if (handCursor != null && handCursor.isDisposed() == false) { handCursor.dispose(); } } }); List<EJFrameworkExtensionPropertyListEntry> allListEntries = propertyList.getAllListEntries(); for (EJFrameworkExtensionPropertyListEntry entry : allListEntries) { final String actionID = entry .getProperty(EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_ACTION_ID); String actionImage = entry.getProperty( EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_ACTION_IMAGE); String actionName = entry.getProperty( EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_ACTION_NAME); String actionTooltip = entry.getProperty( EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_ACTION_TOOLTIP); if (actionID != null) { Action action = new Action(actionID, IAction.AS_PUSH_BUTTON) { @Override public void runWithEvent(Event event) { _block.executeActionCommand(actionID, EJScreenType.MAIN); } }; if (actionName != null) { action.setText(actionName); } if (actionTooltip != null) { action.setDescription(actionTooltip); } if (actionImage != null && actionImage.length() > 0) { action.setImageDescriptor( ImageDescriptor.createFromImage(EJRWTImageRetriever.get(actionImage))); } toolBarManager.add(action); } } toolBarManager.update(true); section.setTextClient(toolbar); } } else { if (mainScreenProperties.getDisplayFrame()) { Group group = new Group(blockCanvas, SWT.NONE); group.setData(EJ_RWT.CUSTOM_VARIANT, EJ_RWT.CSS_CV_ITEM_GROUP); group.setLayout(new FillLayout()); group.setLayoutData(gridData); hookKeyListener(group); String frameTitle = mainScreenProperties.getFrameTitle(); if (frameTitle != null && frameTitle.length() > 0) { group.setText(frameTitle); } _mainPane = new EJRWTEntireJGridPane(group, 1); _mainPane.setData(EJ_RWT.CUSTOM_VARIANT, EJ_RWT.CSS_CV_ITEM_GROUP); } else { _mainPane = new EJRWTEntireJGridPane(blockCanvas, 1); _mainPane.setLayoutData(gridData); _mainPane.cleanLayout(); _mainPane.setData(EJ_RWT.CUSTOM_VARIANT, EJ_RWT.CSS_CV_ITEM_GROUP); } } hookKeyListener(_mainPane); int style = SWT.VIRTUAL | SWT.FULL_SELECTION; if (!_rendererProp.getBooleanProperty(EJRWTTreeTableBlockDefinitionProperties.HIDE_TREE_BORDER, false)) { style = style | SWT.BORDER; } Collection<EJItemGroupProperties> allItemGroupProperties = _block.getProperties() .getScreenItemGroupContainer(EJScreenType.MAIN).getAllItemGroupProperties(); final Tree table; final EJRWTAbstractFilteredTree filterTree; if (_rendererProp.getBooleanProperty(EJRWTTreeTableBlockDefinitionProperties.FILTER, true)) { if (allItemGroupProperties.size() > 0) { EJItemGroupProperties displayProperties = allItemGroupProperties.iterator().next(); if (displayProperties.dispayGroupFrame()) { Group group = new Group(_mainPane, SWT.NONE); group.setLayout(new FillLayout()); if (displayProperties.getFrameTitle() != null && displayProperties.getFrameTitle().length() > 0) { group.setText(displayProperties.getFrameTitle()); } group.setLayoutData( new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); filterTree = new EJRWTAbstractFilteredTree(group, style) { @Override public void filter(String filter) { if (_filteredContentProvider != null && (filter == null && _filteredContentProvider.getFilter() != null || !filter.equals(_filteredContentProvider.getFilter()))) { _filteredContentProvider.setFilter(filter); refresh(filter); } } }; } else { filterTree = new EJRWTAbstractFilteredTree(_mainPane, style) { @Override public void filter(String filter) { if (_filteredContentProvider != null && (filter == null && _filteredContentProvider.getFilter() != null || !filter.equals(_filteredContentProvider.getFilter()))) { _filteredContentProvider.setFilter(filter); refresh(filter); } } }; filterTree.setLayoutData( new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); } } else { filterTree = new EJRWTAbstractFilteredTree(_mainPane, style) { @Override public void filter(String filter) { if (_filteredContentProvider != null && (filter == null && _filteredContentProvider.getFilter() != null || !filter.equals(_filteredContentProvider.getFilter()))) { _filteredContentProvider.setFilter(filter); refresh(filter); } } }; filterTree.setLayoutData( new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); } table = (_tableViewer = filterTree.getViewer()).getTree(); } else { filterTree = null; if (allItemGroupProperties.size() > 0) { EJItemGroupProperties displayProperties = allItemGroupProperties.iterator().next(); if (displayProperties.dispayGroupFrame()) { Group group = new Group(_mainPane, SWT.NONE); group.setLayout(new FillLayout()); if (displayProperties.getFrameTitle() != null && displayProperties.getFrameTitle().length() > 0) { group.setText(displayProperties.getFrameTitle()); } group.setLayoutData( new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); table = new Tree(group, style); } else { table = new Tree(_mainPane, style); table.setLayoutData( new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); } } else { table = new Tree(_mainPane, style); table.setLayoutData( new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); } } table.setLinesVisible(_rendererProp .getBooleanProperty(EJRWTTreeTableBlockDefinitionProperties.SHOW_VERTICAL_LINES, true)); table.setHeaderVisible(_rendererProp .getBooleanProperty(EJRWTTreeTableBlockDefinitionProperties.SHOW_HEADING_PROPERTY, true)); Control[] children = table.getChildren(); for (Control control : children) { hookKeyListener(control); } hookKeyListener(table); // final boolean hideSelection = (style & SWT.HIDE_SELECTION) != 0; _tableViewer = new TreeViewer(table); ColumnViewerToolTipSupport.enableFor(_tableViewer); EJRWTTreeTableViewerColumnFactory factory = new EJRWTTreeTableViewerColumnFactory(_tableViewer); final List<ColumnLabelProvider> nodeTextProviders = new ArrayList<ColumnLabelProvider>(); for (EJItemGroupProperties groupProperties : allItemGroupProperties) { Collection<EJScreenItemProperties> itemProperties = groupProperties.getAllItemProperties(); for (EJScreenItemProperties screenItemProperties : itemProperties) { EJCoreMainScreenItemProperties mainScreenItemProperties = (EJCoreMainScreenItemProperties) screenItemProperties; ColumnLabelProvider screenItem = createScreenItem(factory, mainScreenItemProperties); if (screenItem != null) { nodeTextProviders.add(screenItem); } } } table.addFocusListener(new FocusListener() { @Override public void focusLost(FocusEvent arg0) { setHasFocus(false); } @Override public void focusGained(FocusEvent arg0) { setHasFocus(true); } }); _mainPane.addMouseListener(new MouseAdapter() { @Override public void mouseDown(MouseEvent arg0) { if (!table.isFocusControl()) { setHasFocus(true); } } }); table.addMouseListener(new MouseAdapter() { @Override public void mouseDown(MouseEvent arg0) { if (!table.isFocusControl()) { setHasFocus(true); } } }); final String pid = _rendererProp.getStringProperty(EJRWTTreeTableBlockDefinitionProperties.PARENT_ITEM); final String rid = _rendererProp.getStringProperty(EJRWTTreeTableBlockDefinitionProperties.RELATION_ITEM); final String imageid = _rendererProp .getStringProperty(EJRWTTreeTableBlockDefinitionProperties.NODE_IMAGE_ITEM); if (imageid != null && _tableViewer.getTree().getColumnCount() > 0) { final ColumnLabelProvider baselabelProvider = (ColumnLabelProvider) _tableViewer.getLabelProvider(0); ColumnLabelProvider imgPatchedProvider = new ColumnLabelProvider() { final transient Map<Object, Image> imageMap = new HashMap<Object, Image>(); @Override public void dispose() { for (Image img : imageMap.values()) { img.dispose(); } imageMap.clear(); super.dispose(); } @Override public Font getFont(Object element) { return baselabelProvider.getFont(element); } @Override public Color getBackground(Object element) { return baselabelProvider.getBackground(element); } @Override public Color getForeground(Object element) { return baselabelProvider.getForeground(element); } @Override public String getText(Object element) { return baselabelProvider.getText(element); } @Override public Color getToolTipBackgroundColor(Object object) { return baselabelProvider.getToolTipBackgroundColor(object); } @Override public int getToolTipDisplayDelayTime(Object object) { return baselabelProvider.getToolTipDisplayDelayTime(object); } @Override public Font getToolTipFont(Object object) { return baselabelProvider.getToolTipFont(object); } @Override public Color getToolTipForegroundColor(Object object) { return baselabelProvider.getToolTipForegroundColor(object); } @Override public Image getToolTipImage(Object object) { return baselabelProvider.getToolTipImage(object); } @Override public Point getToolTipShift(Object object) { return baselabelProvider.getToolTipShift(object); } @Override public int getToolTipStyle(Object object) { return baselabelProvider.getToolTipStyle(object); } @Override public String getToolTipText(Object element) { return baselabelProvider.getToolTipText(element); } @Override public int getToolTipTimeDisplayed(Object object) { return baselabelProvider.getToolTipTimeDisplayed(object); } @Override public Image getImage(Object element) { if (imageid != null && element instanceof EJDataRecord) { EJDataRecord record = (EJDataRecord) element; Object iV = record.getValue(imageid); if (iV == null) { return null; } Image image = imageMap.get(iV); if (image != null && !image.isDisposed()) { return image; } if (iV instanceof URL) { image = ImageDescriptor.createFromURL((URL) iV).createImage(); } else if (iV instanceof byte[]) { image = new Image(Display.getDefault(), new ByteArrayInputStream((byte[]) iV)); } if (image != null) { imageMap.put(iV, image); } return image; } return super.getImage(element); } }; ((TreeViewerColumn) _tableViewer.getTree().getColumn(0).getData("VIEWER")) .setLabelProvider(imgPatchedProvider); } _tableViewer.setAutoExpandLevel( _rendererProp.getIntProperty(EJRWTTreeTableBlockDefinitionProperties.NODE_EXPAND_LEVEL, 1)); _tableViewer.setContentProvider(_filteredContentProvider = new FilteredContentProvider() { private List<EJDataRecord> root = new ArrayList<EJDataRecord>(); private Map<Object, Object> indexMap = new HashMap<Object, Object>(); private Map<Object, List<EJDataRecord>> cmap = new HashMap<Object, List<EJDataRecord>>(); private List<EJDataRecord> froot = new ArrayList<EJDataRecord>(); private Map<Object, List<EJDataRecord>> fcmap = new HashMap<Object, List<EJDataRecord>>(); boolean matchItem(EJDataRecord rec) { if (filter != null && filter.trim().length() > 0) { for (ColumnLabelProvider filterTextProvider : nodeTextProviders) { String text = filterTextProvider.getText(rec); if (text != null && text.toLowerCase().contains(filter.toLowerCase())) { return true; } } } return false; } @Override public void inputChanged(Viewer arg0, Object arg1, Object arg2) { _treeBaseRecords.clear(); if (arg2 != null && arg2.equals(filter) && filter.trim().length() > 0) { froot.clear(); fcmap.clear(); // filter for (Entry<Object, List<EJDataRecord>> entry : cmap.entrySet()) { List<EJDataRecord> values = entry.getValue(); List<EJDataRecord> fvalues = new ArrayList<EJDataRecord>(values.size()); fcmap.put(entry.getKey(), fvalues); for (EJDataRecord record : values) { if (matchItem(record)) { fvalues.add(record); } } } // filter root for (EJDataRecord record : root) { if (matchItem(record)) { froot.add(record); } else if (hasChildren(record)) { froot.add(record); } } for (EJDataRecord record : froot) { _treeBaseRecords.add(record); addSubRecords(record.getValue(pid), fcmap); } } else { filter = null; if (filterTree != null) { filterTree.clearText(); } root.clear(); indexMap.clear(); froot.clear(); cmap.clear(); fcmap.clear(); Collection<EJDataRecord> records = _block.getRecords(); for (EJDataRecord record : records) { Object rV = record.getValue(rid); Object pV = record.getValue(pid); if (rV == null) { root.add(record); if (pid != null) { indexMap.put(pV, record); } continue; } List<EJDataRecord> list = cmap.get(rV); if (list == null) { list = new ArrayList<EJDataRecord>(); cmap.put(rV, list); } list.add(record); } //child node with no parent need to consider as roots MAIN: for (Object key : new HashSet<Object>(cmap.keySet())) { if (indexMap.containsKey(key)) { continue; } for (EJDataRecord rec : records) { if (key.equals(rec.getValue(pid))) { continue MAIN; } } List<EJDataRecord> list = cmap.get(key); cmap.remove(key); for (EJDataRecord record : list) { Object pV = record.getValue(pid); root.add(record); if (pid != null) { indexMap.put(pV, record); } } } for (EJDataRecord record : root) { _treeBaseRecords.add(record); addSubRecords(record.getValue(pid), cmap); } } } private void addSubRecords(Object key, Map<Object, List<EJDataRecord>> cmap) { if (key != null) { List<EJDataRecord> list = cmap.get(key); if (list != null) { for (EJDataRecord record : list) { _treeBaseRecords.add(record); addSubRecords(record.getValue(pid), cmap); } } } } @Override public void dispose() { root.clear(); indexMap.clear(); cmap.clear(); froot.clear(); fcmap.clear(); } @Override public Object[] getElements(Object arg0) { if (filter != null && filter.trim().length() > 0) { return froot.toArray(); } return root.toArray(); } @Override public Object[] getChildren(Object arg0) { Map<Object, List<EJDataRecord>> map = filter != null && filter.trim().length() > 0 ? fcmap : cmap; if (arg0 instanceof EJDataRecord) { EJDataRecord record = (EJDataRecord) arg0; Object pV = record.getValue(pid); if (pV != null) { List<EJDataRecord> list = map.get(pV); if (list != null) { return list.toArray(); } } } return new Object[0]; } @Override public Object getParent(Object arg0) { if (arg0 instanceof EJDataRecord) { EJDataRecord record = (EJDataRecord) arg0; Object rV = record.getValue(rid); if (rV != null) { return indexMap.get(rV); } } return null; } @Override public boolean hasChildren(Object arg0) { if (arg0 instanceof EJDataRecord) { Map<Object, List<EJDataRecord>> map = filter != null && filter.trim().length() > 0 ? fcmap : cmap; EJDataRecord record = (EJDataRecord) arg0; Object pV = record.getValue(pid); if (pV != null) { List<EJDataRecord> list = map.get(pV); return list != null && list.size() > 0; } } return false; } }); _tableViewer.setInput(new Object()); selectRow(0); // add double click action final String doubleClickActionCommand = _rendererProp .getStringProperty(EJRWTTreeTableBlockDefinitionProperties.DOUBLE_CLICK_ACTION_COMMAND); if (doubleClickActionCommand != null) { _tableViewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(DoubleClickEvent arg0) { _block.executeActionCommand(doubleClickActionCommand, EJScreenType.MAIN); } }); } _tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent arg0) { EJDataRecord focusedRecord = getFocusedRecord(); if (focusedRecord != null) { _block.newRecordInstance(focusedRecord); } } }); }
From source file:org.polymap.rhei.table.FeatureTableSearchField.java
License:Open Source License
@Override public boolean select(Viewer _viewer, Object parentElm, Object elm) { if (filterText != null /*&& filterText.length() >= 3*/) { IFeatureTableElement feature = (IFeatureTableElement) elm; for (String filterPart : StringUtils.split(filterText.toLowerCase())) { boolean partFound = false; for (String propName : searchPropNames) { try { ColumnLabelProvider labelProvider = viewer.getColumn(propName).getLabelProvider(); String text = labelProvider.getText(feature); //Object value = feature.getValue( propName ); if (text != null && text.toLowerCase().contains(filterPart)) { partFound = true; break; }/*from ww w . j a va 2 s.c om*/ String tooltip = labelProvider.getToolTipText(feature); if (tooltip != null && tooltip.toLowerCase().contains(filterPart)) { partFound = true; break; } } catch (Exception e) { throw new RuntimeException(e); } } if (!partFound) { return false; } } return true; } else { return true; } }