Search in sources :

Example 51 with EJDataRecord

use of org.entirej.framework.core.data.EJDataRecord in project rap by entirej.

the class EJRWTTextItemRenderer method getColumnSorter.

@Override
public EJRWTAbstractTableSorter getColumnSorter(final EJScreenItemProperties item, EJScreenItemController controller) {
    final Collator compareCollator = Collator.getInstance();
    return new EJRWTAbstractTableSorter() {

        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            if (e1 instanceof EJDataRecord && e2 instanceof EJDataRecord) {
                EJDataRecord d1 = (EJDataRecord) e1;
                EJDataRecord d2 = (EJDataRecord) e2;
                if (d1 != null && d2 != null) {
                    Object value1 = d1.getValue(item.getReferencedItemName());
                    Object value2 = d2.getValue(item.getReferencedItemName());
                    if (value1 == null && value2 == null) {
                        return 0;
                    }
                    if (value1 == null && value2 != null) {
                        return -1;
                    }
                    if (value1 != null && value2 == null) {
                        return 1;
                    }
                    return compareCollator.compare(value1, value2);
                }
            }
            return 0;
        }

        @Override
        public int compareNumber(Viewer viewer, Object e1, Object e2, DecimalFormat frm) {
            if (e1 instanceof EJDataRecord && e2 instanceof EJDataRecord) {
                EJDataRecord d1 = (EJDataRecord) e1;
                EJDataRecord d2 = (EJDataRecord) e2;
                if (d1 != null && d2 != null) {
                    Object value1 = d1.getValue(item.getReferencedItemName());
                    Object value2 = d2.getValue(item.getReferencedItemName());
                    if (value1 == null && value2 == null) {
                        return 0;
                    }
                    if (value1 == null && value2 != null) {
                        return -1;
                    }
                    if (value1 != null && value2 == null) {
                        return 1;
                    }
                    if (value1 instanceof String && value2 instanceof String) {
                        try {
                            Number dv1 = frm.parse((String) value1);
                            Number dv2 = frm.parse((String) value2);
                            return Double.compare(dv1.doubleValue(), dv2.doubleValue());
                        } catch (NumberFormatException f) {
                            return compareCollator.compare(value1, value2);
                        } catch (ParseException e) {
                            return compareCollator.compare(value1, value2);
                        }
                    }
                    return compareCollator.compare(value1, value2);
                }
            }
            return 0;
        }

        @Override
        public int compareDate(Viewer viewer, Object e1, Object e2, DateFormat format) {
            if (e1 instanceof EJDataRecord && e2 instanceof EJDataRecord) {
                EJDataRecord d1 = (EJDataRecord) e1;
                EJDataRecord d2 = (EJDataRecord) e2;
                if (d1 != null && d2 != null) {
                    Object value1 = d1.getValue(item.getReferencedItemName());
                    Object value2 = d2.getValue(item.getReferencedItemName());
                    if (value1 == null && value2 == null) {
                        return 0;
                    }
                    if (value1 == null && value2 != null) {
                        return -1;
                    }
                    if (value1 != null && value2 == null) {
                        return 1;
                    }
                    if (value1 instanceof String && value2 instanceof String) {
                        try {
                            Date dv1 = format.parse((String) value1);
                            Date dv2 = format.parse((String) value2);
                            return dv1.compareTo(dv2);
                        } catch (ParseException e) {
                        // ignore
                        }
                    }
                    return compareCollator.compare(value1, value2);
                }
            }
            return 0;
        }
    };
}
Also used : DecimalFormat(java.text.DecimalFormat) DateFormat(java.text.DateFormat) Viewer(org.eclipse.jface.viewers.Viewer) ParseException(java.text.ParseException) EJDataRecord(org.entirej.framework.core.data.EJDataRecord) Date(java.util.Date) Collator(java.text.Collator) EJRWTAbstractTableSorter(org.entirej.applicationframework.rwt.table.EJRWTAbstractTableSorter)

Example 52 with EJDataRecord

use of org.entirej.framework.core.data.EJDataRecord in project rap by entirej.

the class EJRWTTextItemRenderer method createColumnLabelProvider.

@Override
public ColumnLabelProvider createColumnLabelProvider(final EJScreenItemProperties item, EJScreenItemController controller) {
    ColumnLabelProvider provider = new TextHtmlEscapeSupport() {

        @Override
        public Color getBackground(Object element) {
            EJCoreVisualAttributeProperties properties = getAttributes(item, 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(item, element);
            if (properties != null) {
                Color foreground = EJRWTVisualAttributeUtils.INSTANCE.getForeground(properties);
                if (foreground != null) {
                    return foreground;
                }
            }
            return super.getForeground(element);
        }

        private EJCoreVisualAttributeProperties getAttributes(final EJScreenItemProperties item, Object element) {
            EJCoreVisualAttributeProperties properties = null;
            if (element instanceof EJDataRecord) {
                EJDataRecord record = (EJDataRecord) element;
                properties = record.getItem(item.getReferencedItemName()).getVisualAttribute();
            }
            if (properties == null) {
                properties = _visualAttributeProperties;
            }
            return properties;
        }

        @Override
        public Font getFont(Object element) {
            EJCoreVisualAttributeProperties properties = getAttributes(item, element);
            if (properties != null) {
                return EJRWTVisualAttributeUtils.INSTANCE.getFont(properties, super.getFont(element));
            }
            return super.getFont(element);
        }

        @Override
        public String getText(Object element) {
            if (element instanceof EJDataRecord) {
                EJDataRecord record = (EJDataRecord) element;
                Object value = record.getValue(item.getReferencedItemName());
                if (value instanceof String) {
                    return check(value.toString());
                }
            }
            return "";
        }

        String check(String text) {
            if (escapeHtml && text != null && !text.isEmpty()) {
                return escapeHtml(text);
            }
            return text;
        }

        String escapeHtml(String string) {
            StringBuilder escapedTxt = new StringBuilder();
            for (int i = 0; i < string.length(); i++) {
                char tmp = string.charAt(i);
                switch(tmp) {
                    case '<':
                        escapedTxt.append("&lt;");
                        break;
                    case '>':
                        escapedTxt.append("&gt;");
                        break;
                    case '&':
                        escapedTxt.append("&amp;");
                        break;
                    case '"':
                        escapedTxt.append("&quot;");
                        break;
                    case '\'':
                        escapedTxt.append("&#x27;");
                        break;
                    case '/':
                        escapedTxt.append("&#x2F;");
                        break;
                    default:
                        escapedTxt.append(tmp);
                }
            }
            return escapedTxt.toString();
        }
    };
    return provider;
}
Also used : ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) EJScreenItemProperties(org.entirej.framework.core.properties.interfaces.EJScreenItemProperties) Color(org.eclipse.swt.graphics.Color) EJDataRecord(org.entirej.framework.core.data.EJDataRecord) EJCoreVisualAttributeProperties(org.entirej.framework.core.properties.EJCoreVisualAttributeProperties)

Aggregations

EJDataRecord (org.entirej.framework.core.data.EJDataRecord)52 ColumnLabelProvider (org.eclipse.jface.viewers.ColumnLabelProvider)18 EJScreenItemProperties (org.entirej.framework.core.properties.interfaces.EJScreenItemProperties)16 EJCoreVisualAttributeProperties (org.entirej.framework.core.properties.EJCoreVisualAttributeProperties)15 Color (org.eclipse.swt.graphics.Color)12 EJFrameworkExtensionProperties (org.entirej.framework.core.properties.definitions.interfaces.EJFrameworkExtensionProperties)12 Viewer (org.eclipse.jface.viewers.Viewer)11 EJScreenItemController (org.entirej.framework.core.interfaces.EJScreenItemController)11 ArrayList (java.util.ArrayList)10 EJCoreMainScreenItemProperties (org.entirej.framework.core.properties.EJCoreMainScreenItemProperties)10 EJMessage (org.entirej.framework.core.EJMessage)9 EJRWTAbstractTableSorter (org.entirej.applicationframework.rwt.table.EJRWTAbstractTableSorter)8 EJBlockProperties (org.entirej.framework.core.properties.interfaces.EJBlockProperties)8 JsonObject (org.eclipse.rap.json.JsonObject)7 GridData (org.eclipse.swt.layout.GridData)7 EJFrameworkExtensionPropertyListEntry (org.entirej.framework.core.properties.definitions.interfaces.EJFrameworkExtensionPropertyListEntry)7 EJItemGroupProperties (org.entirej.framework.core.properties.interfaces.EJItemGroupProperties)7 HashMap (java.util.HashMap)6 ISelection (org.eclipse.jface.viewers.ISelection)6 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)6