Example usage for org.eclipse.jface.resource ImageDescriptor createFromImage

List of usage examples for org.eclipse.jface.resource ImageDescriptor createFromImage

Introduction

In this page you can find the example usage for org.eclipse.jface.resource ImageDescriptor createFromImage.

Prototype

public static ImageDescriptor createFromImage(Image img) 

Source Link

Document

Creates and returns a new image descriptor for the given image.

Usage

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)));
}