List of usage examples for org.eclipse.jface.viewers ColumnLabelProvider getImage
@Override
public Image getImage(Object element)
From source file:org.entirej.applicationframework.rwt.renderers.html.EJRWTHtmlTableBlockRenderer.java
License:Apache License
private void createHTML() { if (_browser == null || _browser.isDisposed()) { return;// ww w. j a v a 2s . co m } StringBuilder builder = new StringBuilder(); { builder.append("<div id=\"table\" style=\"float:left;width:100%;height:100%; overflow:auto\">"); { EJCoreBlockProperties blockProperties = _block.getProperties(); int cellSpacing = blockProperties.getBlockRendererProperties().getIntProperty(CELL_SPACING_PROPERTY, 0); int cellPadding = blockProperties.getBlockRendererProperties().getIntProperty(CELL_PADDING_PROPERTY, 0); String paddingStyle = null; if (cellPadding > 0) { String str = String.valueOf(cellPadding); paddingStyle = String.format("padding: %spx %spx %spx %spx; ", str, str, str, str); } builder.append("<table border=0 cellspacing=").append(cellSpacing).append(" width=\"100%\" >"); { builder.append("<link rel=\"stylesheet\" type=\"text/css\" href=\""); builder.append(createVACSSUrl()); builder.append("\">"); int charHeight = EJRWTImageRetriever.getGraphicsProvider() .getCharHeight(Display.getDefault().getSystemFont()); String trDef = String.format("<tr style=\"height: %spx\">", String.valueOf(charHeight)); if (_headerTag != null) { String sortHeader = _headerTag; if (activeSortColumn != null) { StringBuilder header = new StringBuilder(); if (activeSortColumn.direction != SortInfo.DIRECTION.NONE) { header.append("  <img name=\"open\" "); header.append("src=\""); header.append(createImageUrl(activeSortColumn.direction == SortInfo.DIRECTION.ASC ? "resource/widget/rap/column/sort-indicator-up.png" : "resource/widget/rap/column/sort-indicator-down.png")); header.append("\""); header.append(" >"); } sortHeader = _headerTag.replace(String.format("<esh %s/>", activeSortColumn.id), header.toString()); } builder.append(sortHeader); } Collection<EJDataRecord> records = _tableBaseRecords; if (records.size() > 0) { records = sortedRecords(records); int lastRowSpan = 0; String oddVA = "default_all"; String valueVA = blockProperties.getBlockRendererProperties().getStringProperty(ROW_ODD_VA); if (valueVA != null && valueVA.length() > 0) { oddVA = valueVA; } String evenVA = "default_all"; valueVA = blockProperties.getBlockRendererProperties().getStringProperty(ROW_EVEN_VA); if (valueVA != null && valueVA.length() > 0) { evenVA = valueVA; } int rowid = 0; for (EJDataRecord record : records) { rowid++; if (lastRowSpan > 1) { for (int i = 1; i < lastRowSpan; i++) { builder.append(trDef).append("</tr>"); } lastRowSpan = 0; } builder.append(trDef); for (EJCoreMainScreenItemProperties item : _items) { String styleClass = (rowid % 2) != 0 ? oddVA : evenVA; String actionDef = null; String alignment = null; float width = -1; ColumnLabelProvider columnLabelProvider = _itemLabelProviders .get(item.getReferencedItemName()); EJScreenItemController screenItem = _block.getScreenItem(EJScreenType.MAIN, item.getReferencedItemName()); EJCoreVisualAttributeProperties iva = screenItem.getManagedItemRenderer() .getVisualAttributeProperties(); if (iva != null) { styleClass = iva.getName(); } EJFrameworkExtensionProperties rendererProperties = item .getReferencedItemProperties().getItemRendererProperties(); EJCoreVisualAttributeProperties diva = record.getItem(item.getReferencedItemName()) .getVisualAttribute(); if (diva != null) { styleClass = diva.getName(); } builder.append(String.format("<td class=\"%s\" ", styleClass)); if (paddingStyle != null) { builder.append(String.format(" style=\'%s\'", paddingStyle)); } EJFrameworkExtensionProperties extentionProperties = item .getBlockRendererRequiredProperties(); if (width == -1) { width = extentionProperties.getIntProperty(DISPLAY_WIDTH_PROPERTY, 0); } String action = extentionProperties.getStringProperty(CELL_ACTION_COMMAND); if (action == null || action.length() == 0) { action = item.getActionCommand(); } if (action != null && action.length() > 0) { actionDef = String.format("em='eaction' earg='%s , %s' ", action, String.valueOf(getDisplayedRecordNumber(record))); } if (width > 0) { Font font = columnLabelProvider.getFont(new Object()); if (font == null) font = _browser.getFont(); if (font != null) { float avgCharWidth = RWTUtils.getAvgCharWidth(font); if (avgCharWidth > 0) { if (width != 1) { // add +1 padding width = ((int) (((width + 1) * avgCharWidth))); } } } builder.append(String.format(" width=%s ", width)); } if (alignment == null) { String alignmentProperty = rendererProperties .getStringProperty(PROPERTY_ALIGNMENT); if (alignmentProperty == null) { alignmentProperty = rendererProperties.getStringProperty("ALLIGNMENT"); } alignment = getComponentAlignment(alignmentProperty); } if (alignment != null) { builder.append(String.format(" align=\'%s\'", alignment)); } final String caseProperty = getComponentCase( rendererProperties.getStringProperty(PROPERTY_CASE)); builder.append(String.format(" font style=\'%s\'", caseProperty)); builder.append(">"); String text = columnLabelProvider.getText(record); if (actionDef != null && text != null && text.length() > 0) { builder.append(String.format("<ejl><u %s class=\"%s %s\" ", "style=\"line-height: 100%\"", ("default_all".equals(styleClass) ? "default_link_fg" : "default_link"), styleClass)); builder.append(actionDef).append(">"); } Image image = columnLabelProvider.getImage(record); if (image != null) { if (actionDef == null) { builder.append("<img src=\""); builder.append(ImageFactory.getImagePath(image)); builder.append("\""); builder.append(String.format(" class=\"default %s\" >", styleClass)); } else { builder.append("<ejl><img src=\""); builder.append(ImageFactory.getImagePath(image)); builder.append("\""); builder.append( String.format("style=\"cursor: hand;\" class=\"%s \" %s > </ejl>", styleClass, actionDef)); } } // builder.append(String.format("<p class=\"default %s\">", // styleClass)); builder.append(text); builder.append("</td>"); } builder.append("</tr>"); } } else { builder.append(trDef); for (EJCoreMainScreenItemProperties item : _items) { String padding = paddingStyle; float width = -1; ColumnLabelProvider columnLabelProvider = _itemLabelProviders .get(item.getReferencedItemName()); builder.append(String.format("<td class=\"%s\" ", "default_all")); if (padding != null) { builder.append(String.format(" style=\'%s\'", padding)); } EJFrameworkExtensionProperties extentionProperties = item .getBlockRendererRequiredProperties(); if (width == -1) { width = extentionProperties.getIntProperty(DISPLAY_WIDTH_PROPERTY, 0); } if (width > 0) { Font font = columnLabelProvider.getFont(new Object()); if (font == null) font = _browser.getFont(); if (font != null) { float avgCharWidth = RWTUtils.getAvgCharWidth(font); if (avgCharWidth > 0) { if (width != 1) { // add +1 padding width = ((int) (((width + 1) * avgCharWidth))); } } } builder.append(String.format(" width=%s ", width)); } builder.append(">"); builder.append("</td>"); } builder.append("</tr>"); } } builder.append("</table>"); } builder.append("</<div>"); } String html = builder.toString(); if (_browser.getText() == null || (!html.equals(_browser.getText()))) { _browser.setText(html); LOGGER.debug(html); } }
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 a 2s . 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); } } // 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.entirej.custom.renderers.WorkWeekBlockRenderer.java
License:Apache License
private void createHTML() { if (_browser == null || _browser.isDisposed()) { return;//from w w w .ja v a2 s .c o m } StringBuilder builder = new StringBuilder(); { builder.append("<div id=\"table\" style=\"float:left;width:100%;height:100%; overflow:auto\">"); { EJCoreBlockProperties blockProperties = _block.getProperties(); int cellSpacing = blockProperties.getBlockRendererProperties().getIntProperty(CELL_SPACING_PROPERTY, 0); int cellPadding = blockProperties.getBlockRendererProperties().getIntProperty(CELL_PADDING_PROPERTY, 0); String paddingStyle = ""; String cellStyleTOP = ""; String cellStyleLEFT = ""; if (cellPadding > 0) { String str = String.valueOf(cellPadding); paddingStyle = String.format("padding: %spx %spx %spx %spx; ", str, str, str, str); } if (cellSpacing > 0) { cellStyleTOP = String.format("border-top: %dpx solid #9e9e9e; ", cellSpacing); cellStyleLEFT = String.format(" border-left: %dpx solid #9e9e9e;", cellSpacing); } builder.append("<table cellspacing=").append(0).append( " width=\"100%\" style='border-bottom: 1px solid #9e9e9e;border-right: 1px solid #9e9e9e;'>"); { builder.append("<link rel=\"stylesheet\" type=\"text/css\" href=\""); builder.append(createVACSSUrl()); builder.append("\">"); int charHeight = EJRWTImageRetriever.getGraphicsProvider() .getCharHeight(Display.getDefault().getSystemFont()); String trDef = String.format("<tr style=\"height: %spx\">", String.valueOf(charHeight)); if (_headerTag != null) { String sortHeader = _headerTag; builder.append(sortHeader); } String oddVA = "default_all"; String valueVA = blockProperties.getBlockRendererProperties().getStringProperty(ROW_ODD_VA); if (valueVA != null && valueVA.length() > 0) { oddVA = valueVA; } String evenVA = "default_all"; valueVA = blockProperties.getBlockRendererProperties().getStringProperty(ROW_EVEN_VA); if (valueVA != null && valueVA.length() > 0) { evenVA = valueVA; } int[] WEEK_DAYS = new int[] { Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY, Calendar.FRIDAY, Calendar.SATURDAY, Calendar.SUNDAY }; Map<Integer, List<EJDataRecord>> grouped = getGrouped(_block.getRecords()); int rowid = 0; for (int DAY : WEEK_DAYS) { rowid++; final String styleClass = (rowid % 2) != 0 ? oddVA : evenVA; List<EJDataRecord> list = grouped.get(DAY); if (list == null || list.size() == 0) { boolean addDAYTD = true; int emptyLines = 2; for (int i = 0; i < emptyLines; i++) { builder.append(trDef); { if (addDAYTD) { addDAYTD = false; addDateTD(builder, paddingStyle + cellStyleTOP + cellStyleLEFT, DAY, emptyLines, styleClass); } addEmptyLine(builder, paddingStyle, styleClass, i == 0 ? cellStyleTOP : "", cellStyleLEFT); } } continue; } Collections.sort(list, new Comparator<EJDataRecord>() { @Override public int compare(EJDataRecord o1, EJDataRecord o2) { TimeEntry e1 = (TimeEntry) o1.getServicePojo(); TimeEntry e2 = (TimeEntry) o2.getServicePojo(); return (e2.getStartTime().compareTo(e1.getStartTime())); } }); boolean addDAYTD = true; int size = list.size() + 1;// add total line for (EJDataRecord record : list) { builder.append(trDef); { if (addDAYTD) { addDAYTD = false; addDateTD(builder, paddingStyle + cellStyleTOP + cellStyleLEFT, DAY, size, styleClass); } } for (EJCoreMainScreenItemProperties item : _items) { String actionDef = null; String alignment = null; float width = -1; ColumnLabelProvider columnLabelProvider = _itemLabelProviders .get(item.getReferencedItemName()); EJScreenItemController screenItem = _block.getScreenItem(EJScreenType.MAIN, item.getReferencedItemName()); String computeStyleClass = styleClass; EJCoreVisualAttributeProperties iva = screenItem.getManagedItemRenderer() .getVisualAttributeProperties(); if (iva != null) { computeStyleClass = iva.getName(); } EJFrameworkExtensionProperties rendererProperties = item .getReferencedItemProperties().getItemRendererProperties(); EJCoreVisualAttributeProperties diva = record.getItem(item.getReferencedItemName()) .getVisualAttribute(); if (diva != null) { computeStyleClass = diva.getName(); } builder.append(String.format("<td class=\"%s\" ", computeStyleClass)); if (paddingStyle != null) { builder.append(String.format(" style=\'%s\'", paddingStyle + cellStyleTOP + cellStyleLEFT)); } EJFrameworkExtensionProperties extentionProperties = item .getBlockRendererRequiredProperties(); if (width == -1) { width = extentionProperties.getIntProperty(DISPLAY_WIDTH_PROPERTY, 0); } String action = extentionProperties.getStringProperty(CELL_ACTION_COMMAND); if (action != null && action.length() > 0) { actionDef = String.format("em='eaction' earg='%s , %s' ", action, String.valueOf(getDisplayedRecordNumber(record))); } if (width > 0) { Font font = columnLabelProvider.getFont(new Object()); if (font == null) font = _browser.getFont(); if (font != null) { float avgCharWidth = RWTUtils.getAvgCharWidth(font); if (avgCharWidth > 0) { if (width != 1) { // add +1 padding width = ((int) (((width + 1) * avgCharWidth))); } } } builder.append(String.format(" width=%s ", width)); } if (alignment == null) { String alignmentProperty = rendererProperties .getStringProperty(PROPERTY_ALIGNMENT); if (alignmentProperty == null) { alignmentProperty = rendererProperties.getStringProperty("ALLIGNMENT"); } alignment = getComponentAlignment(alignmentProperty); } if (alignment != null) { builder.append(String.format(" align=\'%s\'", alignment)); } final String caseProperty = getComponentCase( rendererProperties.getStringProperty(PROPERTY_CASE)); builder.append(String.format(" font style=\'%s\'", caseProperty)); builder.append(">"); String text = columnLabelProvider.getText(record); if (actionDef != null && text != null && text.length() > 0) { builder.append(String.format("<ejl><u %s class=\"%s %s\" ", "style=\"line-height: 100%\"", ("default_all".equals(computeStyleClass) ? "default_link_fg" : "default_link"), computeStyleClass)); builder.append(actionDef).append(">"); } Image image = columnLabelProvider.getImage(record); if (image != null) { if (actionDef == null) { builder.append("<img src=\""); builder.append(ImageFactory.getImagePath(image)); builder.append("\""); builder.append( String.format(" class=\"default %s\" >", computeStyleClass)); } else { builder.append("<ejl><img src=\""); builder.append(ImageFactory.getImagePath(image)); builder.append("\""); builder.append( String.format("style=\"cursor: hand;\" class=\"%s \" %s > </ejl>", computeStyleClass, actionDef)); } } // builder.append(String.format("<p class=\"default %s\">", // styleClass)); builder.append(text); builder.append("</td>"); } builder.append("</tr>"); } if (size > 1) addTotalLine(builder, paddingStyle, styleClass, cellStyleTOP, cellStyleLEFT, getTotalHours(list)); } } builder.append("</table>"); } builder.append("</<div>"); } String html = builder.toString(); if (_browser.getText() == null || (!html.equals(_browser.getText()))) { _browser.setText(html); LOGGER.debug(html); } }