List of usage examples for org.eclipse.jface.resource ImageDescriptor createFromImage
public static ImageDescriptor createFromImage(Image img)
From source file:org.entirej.applicationframework.rwt.renderers.blocks.EJRWTTreeRecordBlockRenderer.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(//w w w. j av a2s.com 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.setData(EJ_RWT.CUSTOM_VARIANT, EJ_RWT.CSS_CV_ITEM_GROUP); _mainPane.setLayoutData(gridData); _mainPane.cleanLayoutHorizontal(); 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; if (!rendererProp.getBooleanProperty(EJRWTTreeBlockDefinitionProperties.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(EJRWTTreeBlockDefinitionProperties.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)); } _tableViewer = new TreeViewer(table); } Control[] children = table.getChildren(); for (Control control : children) { hookKeyListener(control); } hookKeyListener(table); ColumnViewerToolTipSupport.enableFor(_tableViewer); final List<TreeNodeTextProvider> nodeTextProviders = new ArrayList<EJRWTTreeRecordBlockRenderer.TreeNodeTextProvider>(); for (EJItemGroupProperties groupProperties : allItemGroupProperties) { Collection<EJScreenItemProperties> itemProperties = groupProperties.getAllItemProperties(); for (EJScreenItemProperties screenItemProperties : itemProperties) { EJCoreMainScreenItemProperties mainScreenItemProperties = (EJCoreMainScreenItemProperties) screenItemProperties; TreeNodeTextProvider screenItem = createScreenItem(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(EJRWTTreeBlockDefinitionProperties.PARENT_ITEM); final String rid = rendererProp.getStringProperty(EJRWTTreeBlockDefinitionProperties.RELATION_ITEM); final String imageid = rendererProp.getStringProperty(EJRWTTreeBlockDefinitionProperties.NODE_IMAGE_ITEM); final EJCoreVisualAttributeProperties baseVA; String visualAttribute = rendererProp .getStringProperty(EJRWTTreeBlockDefinitionProperties.VISUAL_ATTRIBUTE_PROPERTY); if (visualAttribute != null) { baseVA = EJCoreProperties.getInstance().getVisualAttributesContainer() .getVisualAttributeProperties(visualAttribute); } else { baseVA = null; } final Map<Object, Image> imageMap = new HashMap<Object, Image>(); _tableViewer.setLabelProvider(new ColumnLabelProvider() { @Override public Color getBackground(Object element) { EJCoreVisualAttributeProperties properties = getAttributes(element); if (properties != null) { Color background = EJRWTVisualAttributeUtils.INSTANCE.getBackground(properties); if (background != null) { return background; } } return super.getBackground(element); } @Override public Color getForeground(Object element) { EJCoreVisualAttributeProperties properties = getAttributes(element); if (properties != null) { Color foreground = EJRWTVisualAttributeUtils.INSTANCE.getForeground(properties); if (foreground != null) { return foreground; } } return super.getForeground(element); } private EJCoreVisualAttributeProperties getAttributes(Object element) { EJCoreVisualAttributeProperties properties = null; if (pid != null && element instanceof EJDataRecord) { EJDataRecord record = (EJDataRecord) element; properties = record.getItem(pid).getVisualAttribute(); } if (properties == null) { properties = baseVA; } return properties; } @Override public Font getFont(Object element) { EJCoreVisualAttributeProperties properties = getAttributes(element); if (properties != null) { Font font = super.getFont(element); return EJRWTVisualAttributeUtils.INSTANCE.getFont(properties, font != null ? font : _tableViewer.getTree().getFont()); } return super.getFont(element); } @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); } @Override public String getText(Object element) { if (nodeTextProviders.size() == 1) { return nodeTextProviders.get(0).getText(element); } StringBuilder builder = new StringBuilder(); for (TreeNodeTextProvider textProvider : nodeTextProviders) { builder.append(textProvider.getText(element)); } return builder.toString(); } }); _tableViewer.setAutoExpandLevel( rendererProp.getIntProperty(EJRWTTreeBlockDefinitionProperties.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 (TreeNodeTextProvider 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(); for (Image img : imageMap.values()) { img.dispose(); } imageMap.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(); for (Image img : imageMap.values()) { img.dispose(); } imageMap.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(EJRWTTreeBlockDefinitionProperties.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.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 ww w .j av a 2 s. co m*/ 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.entirej.applicationframework.rwt.renderers.mobile.blocks.EJRWTListRecordBlockRenderer.java
License:Apache License
public void buildGuiComponent(EJRWTEntireJGridPane blockCanvas) { EJFrameworkExtensionProperties appProp = EJCoreProperties.getInstance().getApplicationDefinedProperties(); if (appProp != null) { EJFrameworkExtensionProperties propertyGroup = appProp .getPropertyGroup(EJRWTSingleRecordBlockDefinitionProperties.ACTION_GROUP); if (propertyGroup != null) { addActionKeyinfo(/* w ww . j av a2s . 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); } } // blockCanvas.cleanLayoutVertical(); 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(); EJFrameworkExtensionProperties 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.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); section.setClient(group); } else { _mainPane = new EJRWTEntireJGridPane(section, 1); _mainPane.setLayoutData(gridData); _mainPane.cleanLayoutHorizontal(); 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() { 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.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); } else { _mainPane = new EJRWTEntireJGridPane(blockCanvas, 1); _mainPane.setLayoutData(gridData); _mainPane.cleanLayoutHorizontal(); } } hookKeyListener(_mainPane); int style = SWT.VIRTUAL | SWT.V_SCROLL; if (!rendererProp.getBooleanProperty(EJRWTListRecordBlockDefinitionProperties.HIDE_TABLE_BORDER, false)) style = style | SWT.BORDER; if (rendererProp.getBooleanProperty(EJRWTListRecordBlockDefinitionProperties.ROW_SELECTION_PROPERTY, true)) style = style | SWT.FULL_SELECTION; else style = style | SWT.HIDE_SELECTION; Collection<EJItemGroupProperties> allItemGroupProperties = _block.getProperties() .getScreenItemGroupContainer(EJScreenType.MAIN).getAllItemGroupProperties(); final Table table; final boolean hideSelection = (style & SWT.HIDE_SELECTION) != 0; final EJRWTAbstractFilteredTable filterTree; if (rendererProp.getBooleanProperty(EJRWTTreeBlockDefinitionProperties.FILTER, false)) { 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 EJRWTAbstractFilteredTable(group, style) { @Override public void filter(String filter) { if (filteredContentProvider != null && ((filter == null && filteredContentProvider.getFilter() != null) || !filter.equals(filteredContentProvider.getFilter()))) { filteredContentProvider.setFilter(filter); getViewer().setInput(filter); notifyStatus(); } } @Override protected TableViewer doCreateTableViewer(Composite parent, int style) { return _tableViewer = new TableViewer(parent) { @Override public void setSelection(ISelection selection) { if (hideSelection) selection = new StructuredSelection(); super.setSelection(selection); } @Override public void setSelection(ISelection selection, boolean reveal) { if (hideSelection) selection = new StructuredSelection(); super.setSelection(selection, reveal); } }; } }; } else { filterTree = new EJRWTAbstractFilteredTable(_mainPane, style) { @Override public void filter(String filter) { if (filteredContentProvider != null && ((filter == null && filteredContentProvider.getFilter() != null) || !filter.equals(filteredContentProvider.getFilter()))) { filteredContentProvider.setFilter(filter); getViewer().setInput(filter); notifyStatus(); } } @Override protected TableViewer doCreateTableViewer(Composite parent, int style) { return _tableViewer = new TableViewer(parent) { @Override public void setSelection(ISelection selection) { if (hideSelection) selection = new StructuredSelection(); super.setSelection(selection); } @Override public void setSelection(ISelection selection, boolean reveal) { if (hideSelection) selection = new StructuredSelection(); super.setSelection(selection, reveal); } }; } }; filterTree.setLayoutData( new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); } } else { filterTree = new EJRWTAbstractFilteredTable(_mainPane, style) { @Override public void filter(String filter) { if (filteredContentProvider != null && ((filter == null && filteredContentProvider.getFilter() != null) || !filter.equals(filteredContentProvider.getFilter()))) { filteredContentProvider.setFilter(filter); getViewer().setInput(filter); notifyStatus(); } } @Override protected TableViewer doCreateTableViewer(Composite parent, int style) { return _tableViewer = new TableViewer(parent) { @Override public void setSelection(ISelection selection) { if (hideSelection) selection = new StructuredSelection(); super.setSelection(selection); } @Override public void setSelection(ISelection selection, boolean reveal) { if (hideSelection) selection = new StructuredSelection(); super.setSelection(selection, reveal); } }; } }; filterTree.setLayoutData( new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); } table = (_tableViewer = filterTree.getViewer()).getTable(); } 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 Table(group, style); } else { table = new Table(_mainPane, style); table.setLayoutData( new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); } } else { table = new Table(_mainPane, style); table.setLayoutData( new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); } _tableViewer = new TableViewer(table) { @Override public void setSelection(ISelection selection) { if (hideSelection) selection = new StructuredSelection(); super.setSelection(selection); } @Override public void setSelection(ISelection selection, boolean reveal) { if (hideSelection) selection = new StructuredSelection(); super.setSelection(selection, reveal); } }; } table.setLinesVisible(false); table.setHeaderVisible(false); Control[] children = table.getChildren(); for (Control control : children) { hookKeyListener(control); } hookKeyListener(table); EJRWTTableViewerColumnFactory factory = new EJRWTTableViewerColumnFactory(_tableViewer); ColumnViewerToolTipSupport.enableFor(_tableViewer); final List<ColumnLabelProvider> nodeTextProviders = new ArrayList<ColumnLabelProvider>(); final Map<ColumnLabelProvider, EJScreenItemProperties> nodeTextProvidersMap = new HashMap<ColumnLabelProvider, EJScreenItemProperties>(); 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); nodeTextProvidersMap.put(screenItem, screenItemProperties); } } } if (!nodeTextProviders.isEmpty()) { table.setData(EJ_RWT.MARKUP_ENABLED, Boolean.TRUE); int height = rendererProp.getIntProperty(EJRWTListRecordBlockDefinitionProperties.ROW_HEIGHT, -1); if (height == -1 && nodeTextProviders.size() > 1) { table.setData(EJ_RWT.CUSTOM_ITEM_HEIGHT, Integer.valueOf(nodeTextProviders.size() * 20)); } else if (height > 0) { table.setData(EJ_RWT.CUSTOM_ITEM_HEIGHT, Integer.valueOf(height)); } // add double click action final String doubleClickActionCommand = rendererProp .getStringProperty(EJRWTListRecordBlockDefinitionProperties.CLICK_ACTION_COMMAND); final boolean hasAction = doubleClickActionCommand != null && doubleClickActionCommand.length() != 0; if (hasAction) { _tableViewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent arg0) { _block.executeActionCommand(doubleClickActionCommand, EJScreenType.MAIN); } }); } final TableViewerColumn dataColumn = factory.createColumn("HTML", 500, new ColumnLabelProvider() { public String toHex(int r, int g, int b) { return "#" + toBrowserHexValue(r) + toBrowserHexValue(g) + toBrowserHexValue(b); } private String toBrowserHexValue(int number) { StringBuilder builder = new StringBuilder(Integer.toHexString(number & 0xff)); while (builder.length() < 2) { builder.append("0"); } return builder.toString().toUpperCase(); } @Override public String getText(Object element) { StringBuilder builder = new StringBuilder(); boolean addBr = false; for (ColumnLabelProvider labelProvider : nodeTextProviders) { if (addBr) { builder.append("<br/>"); } boolean added = false; EJScreenItemProperties item = nodeTextProvidersMap.get(labelProvider); if (item != null && item.getLabel() != null && item.getLabel().trim().length() > 0) { builder.append(item.getLabel()); builder.append(" : "); added = true; } Image image = labelProvider.getImage(element); if (image != null) { String imagePath = ImageFactory.getImagePath(image); if (imagePath != null) { builder.append("<img src=\""); builder.append(imagePath); Rectangle bounds = image.getBounds(); builder.append("\" style=\"vertical-align:middle;\" "); builder.append(" width=\""); builder.append(bounds.width); builder.append("\" "); builder.append(" height=\""); builder.append(bounds.height); builder.append("\"/>"); added = true; } } String text = labelProvider.getText(element); if (text != null && text.length() != 0) { Font vaFont = labelProvider.getFont(element); builder.append("<span style=\""); if (vaFont != null && vaFont.getFontData().length > 0) { FontData fontData = vaFont.getFontData()[0]; if ((fontData.getStyle() & SWT.BOLD) != 0) { builder.append("font-weight:bold;"); } if ((fontData.getStyle() & SWT.ITALIC) != 0) { builder.append("font-style:italic;"); } builder.append("font-size:"); builder.append(fontData.getHeight()); builder.append("px;"); builder.append("font-family:"); builder.append(fontData.getName().replace('"', ' ')); builder.append(";"); } Color background = labelProvider.getBackground(element); if (background != null) { builder.append("background-color:"); builder.append( toHex(background.getRed(), background.getGreen(), background.getBlue())); builder.append(";"); } Color foreground = labelProvider.getForeground(element); if (foreground != null) { builder.append("color:"); builder.append( toHex(foreground.getRed(), foreground.getGreen(), foreground.getBlue())); builder.append(";"); } builder.append("\">"); builder.append(text); builder.append("</span>"); added = true; } if (added) { addBr = true; } } return builder.toString(); } }); if (hasAction) { final Image arrow = EJRWTImageRetriever.get("icons/left-arrow.png"); final TableViewerColumn actionColumn = factory.createColumn("HTML-ACTION", 40, new ColumnLabelProvider() { @Override public String getText(Object element) { return ""; } @Override public Image getImage(Object element) { return arrow; } }); actionColumn.getColumn().setAlignment(SWT.RIGHT); actionColumn.setEditingSupport(new EditingSupport(_tableViewer) { protected void setValue(Object arg0, Object arg1) { // ignore } protected Object getValue(Object arg0) { // ignore return null; } protected CellEditor getCellEditor(Object arg0) { return new CellEditor() { @Override protected void doSetValue(Object arg0) { // ignore } @Override protected void doSetFocus() { // ignore } @Override protected Object doGetValue() { // ignore return null; } @Override protected Control createControl(Composite parent) { Label action = new Label(parent, SWT.NONE); action.setImage(arrow); return action; } }; } protected boolean canEdit(Object arg0) { _block.executeActionCommand(doubleClickActionCommand, EJScreenType.MAIN); return false; } }); } table.addControlListener(new ControlAdapter() { @Override public void controlResized(ControlEvent e) { int offset = hasAction ? 50 : 10; if (table.getSize().x > offset) dataColumn.getColumn().setWidth(table.getSize().x - offset); } }); } table.addFocusListener(new FocusListener() { public void focusLost(FocusEvent arg0) { setHasFocus(false); } public void focusGained(FocusEvent arg0) { setHasFocus(true); } }); // 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 EJBlockController blockController = _block; _tableViewer.setContentProvider(filteredContentProvider = new FilteredContentProvider() { 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; } public void inputChanged(Viewer arg0, Object arg1, Object arg2) { tableBaseRecords.clear(); if (arg2 != null && arg2.equals(filter) && filter.trim().length() > 0) { // filter for (EJDataRecord record : _block.getBlock().getRecords()) { if (matchItem(record)) tableBaseRecords.add(record); } } else { filter = null; if (filterTree != null) filterTree.clearText(); tableBaseRecords.addAll(_block.getBlock().getRecords()); } } public void dispose() { } public Object[] getElements(Object arg0) { return tableBaseRecords.toArray(); } }); _tableViewer.setInput(new Object()); selectRow(0); _tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent arg0) { EJDataRecord focusedRecord = getFocusedRecord(); if (focusedRecord != null) _block.newRecordInstance(focusedRecord); notifyStatus(); } }); }
From source file:org.geotools.swt.action.MapAction.java
License:Open Source License
public MapAction(String toolName, String toolTip, Image image) { if (toolName != null) { setText(toolName);/*from ww w.java2s . c o m*/ } if (toolTip != null) { setToolTipText(toolTip); } if (image != null) { setImageDescriptor(ImageDescriptor.createFromImage(image)); } }
From source file:org.granite.builder.ui.AddNatureWizard.java
License:Open Source License
@Override public void addPages() { setWindowTitle("Add Granite Nature Wizard"); setDefaultPageImageDescriptor(/*from w w w . j a v a2 s .com*/ ImageDescriptor.createFromImage(SWTUtil.getImage(getShell().getDisplay(), "icons/gdswiz.gif"))); addPage(new WizardPage(SOURCES_PANEL) { @Override public void createControl(Composite parent) { try { setControl(new SourcesPanel(parent, context)); } catch (Exception e) { throw new RuntimeException(e); } setTitle("Source Folder Configuration"); setDescription( "Step 1: select Java source folders, included/excluded patterns and output folders..."); } }); addPage(new WizardPage(PROJECTS_PANEL) { @Override public void createControl(Composite parent) { try { setControl(new ProjectsPanel(parent, context)); } catch (Exception e) { throw new RuntimeException(e); } setTitle("Dependent Projects Configuration"); setDescription("Step 2: select dependent granite projects..."); } }); addPage(new WizardPage(CLASSPATHS_PANEL) { @Override public void createControl(Composite parent) { try { setControl(new ClasspathsPanel(parent, context)); } catch (Exception e) { throw new RuntimeException(e); } setTitle("Classpath Configuration"); setDescription("Step 3: select jars or class folders used as classpath..."); } }); addPage(new WizardPage(TEMPLATES_PANEL) { @Override public void createControl(Composite parent) { try { setControl(new TemplatesPanel(parent, context)); } catch (Exception e) { throw new RuntimeException(e); } setTitle("Templates Configuration"); setDescription("Step 4: select templates that will be used for generation..."); } }); addPage(new WizardPage(OPTIONS_PANEL) { @Override public void createControl(Composite parent) { try { setControl(new OptionsPanel(parent, context)); } catch (Exception e) { throw new RuntimeException(e); } setTitle("Miscanellous Options"); setDescription("Step 5: modify various options that control file generation..."); } }); }
From source file:org.granite.wizard.DynamicProjectWizard.java
License:Open Source License
@Override public void createPageControls(Composite pageContainer) { super.createPageControls(pageContainer); try {/*from w w w .j a va 2 s . co m*/ setDefaultPageImageDescriptor(ImageDescriptor.createFromImage(new Image(pageContainer.getDisplay(), getClass().getClassLoader().getResourceAsStream("icons/gdswiz.gif")))); } catch (Exception e) { // ignore... } }
From source file:org.iviPro.editors.annotationeditor.components.contenteditors.richtext.actions.BoldAction.java
License:Open Source License
public BoldAction(HtmlComposer composer) { super("Bold", IAction.AS_CHECK_BOX, composer); //$NON-NLS-1$ setImageDescriptor(//w w w. j a va 2 s.c o m ImageDescriptor.createFromImage((Image) images.get(ActionImages.ActionImage_BoldAction))); }
From source file:org.iviPro.editors.annotationeditor.components.contenteditors.richtext.actions.BulletlistAction.java
License:Open Source License
public BulletlistAction(HtmlComposer composer) { super("Bulletted list", IAction.AS_CHECK_BOX, composer); //$NON-NLS-1$ setImageDescriptor(/*ww w . j av a2s .c o m*/ ImageDescriptor.createFromImage((Image) images.get(ActionImages.ActionImage_BulletlistAction))); }
From source file:org.iviPro.editors.annotationeditor.components.contenteditors.richtext.actions.IndentAction.java
License:Open Source License
public IndentAction(HtmlComposer composer) { super("Indent", IAction.AS_PUSH_BUTTON, composer); //$NON-NLS-1 setImageDescriptor(//from www . j ava 2 s . c o m ImageDescriptor.createFromImage((Image) images.get(ActionImages.ActionImage_IndentAction))); }
From source file:org.iviPro.editors.annotationeditor.components.contenteditors.richtext.actions.InsertEditAnchorAction.java
License:Open Source License
public InsertEditAnchorAction(HtmlComposer composer) { super("Insert/Edit Anchor", IAction.AS_CHECK_BOX, composer); //$NON-NLS-1$ setImageDescriptor(ImageDescriptor .createFromImage((Image) images.get(ActionImages.ActionImage_InsertEditAnchorAction))); }