Search in sources :

Example 26 with UIComponent

use of com.twinsoft.convertigo.beans.mobile.components.UIComponent in project convertigo by convertigo.

the class ComponentManager method makeComponents.

private synchronized List<Component> makeComponents() {
    if (components != null) {
        return components;
    }
    components = new ArrayList<Component>(10);
    try {
        String group;
        // Add Customs
        group = GROUP_CUSTOMS;
        components.add(getDboComponent(UIElement.class, group));
        components.add(getDboComponent(UIAttribute.class, group));
        components.add(getDboComponent(UIAnimation.class, group));
        components.add(getDboComponent(UICustom.class, group));
        components.add(getDboComponent(UIText.class, group));
        components.add(getDboComponent(UIStyle.class, group));
        components.add(getDboComponent(UITheme.class, group));
        // Add shared components
        group = GROUP_SHARED_COMPONENTS;
        components.add(getDboComponent(UISharedComponent.class, group));
        components.add(getDboComponent(UIUseShared.class, group));
        components.add(getDboComponent(UICompVariable.class, group));
        // Add shared actions
        group = GROUP_SHARED_ACTIONS;
        components.add(getDboComponent(UIActionStack.class, group));
        components.add(getDboComponent(UIStackVariable.class, group));
        // Add Controls
        group = GROUP_CONTROLS;
        components.add(getDboComponent(UIControlEvent.class, group));
        components.add(getDboComponent(UIAppEvent.class, group));
        components.add(getDboComponent(UIPageEvent.class, group));
        components.add(getDboComponent(UIEventSubscriber.class, group));
        components.add(getDboComponent(UIActionErrorEvent.class, group));
        components.add(getDboComponent(UIActionFailureEvent.class, group));
        components.add(getDboComponent(UIActionFinallyEvent.class, group));
        components.add(getDboComponent(UIActionLoopEvent.class, group));
        components.add(getDboComponent(UIActionElseEvent.class, group));
        components.add(getDboComponent(UIControlDirective.class, group));
        // Add Actions
        group = GROUP_ACTIONS;
        components.add(getDboComponent(UIControlVariable.class, group));
        components.add(getDboComponent(UICustomAction.class, group));
        components.add(getDboComponent(UIForm.class, "Forms"));
        components.add(getDboComponent(UIFormControlValidator.class, "Forms"));
        components.add(getDboComponent(UIFormCustomValidator.class, "Forms"));
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    }
    for (final IonBean bean : instance.bCache.values()) {
        components.add(new Component() {

            @Override
            public boolean isAllowedIn(DatabaseObject parent) {
                if (bean.getTag().equals("ion-menu")) {
                    return parent instanceof ApplicationComponent;
                }
                if (bean.getClassName().startsWith("com.twinsoft.convertigo.beans.mobile.components.UIDynamicMenuItem")) {
                    if (parent instanceof UIComponent) {
                        if (parent instanceof UIDynamicMenuItem)
                            return false;
                        UIDynamicMenu menu = ((UIComponent) parent).getMenu();
                        return menu != null;
                    }
                }
                Class<?> dboClass;
                try {
                    dboClass = Class.forName(bean.getClassName());
                    if (acceptDatabaseObjects(parent, dboClass)) {
                        return isTplCompatible(parent, createBean());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return false;
            }

            @Override
            public String getLabel() {
                return bean.getLabel();
            }

            @Override
            public String getImagePath() {
                return bean.getIconColor32Path();
            }

            @Override
            public String getGroup() {
                return bean.getGroup();
            }

            @Override
            public String getDescription() {
                return bean.getDescription();
            }

            @Override
            public String getName() {
                return bean.getName();
            }

            @Override
            public String getTag() {
                return bean.getTag();
            }

            @Override
            public String getPropertiesDescription() {
                String propertiesDescription = "";
                List<IonProperty> properties = new ArrayList<IonProperty>();
                properties.addAll(bean.getProperties().values());
                Collections.sort(properties, new Comparator<IonProperty>() {

                    @Override
                    public int compare(IonProperty p1, IonProperty p2) {
                        return p1.getLabel().compareTo(p2.getLabel());
                    }
                });
                for (IonProperty ionProperty : properties) {
                    if (!ionProperty.isHidden()) {
                        propertiesDescription += "<li><i>" + ionProperty.getLabel() + "</i>";
                        propertiesDescription += "</br>" + ionProperty.getDescription() + "</li>";
                    }
                }
                Class<?> dboClass;
                try {
                    dboClass = Class.forName(bean.getClassName());
                    BeanInfo beanInfo = Introspector.getBeanInfo(dboClass);
                    PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
                    propertyDescriptors = propertyDescriptors.clone();
                    Arrays.sort(propertyDescriptors, (o1, o2) -> {
                        if (o1.isExpert() == o2.isExpert()) {
                            return o1.getDisplayName().compareTo(o2.getDisplayName());
                        } else if (o1.isExpert()) {
                            return 1;
                        } else {
                            return -1;
                        }
                    });
                    for (PropertyDescriptor dbopd : propertyDescriptors) {
                        if (!dbopd.isHidden() && !Boolean.TRUE.equals(dbopd.getValue("disable"))) {
                            propertiesDescription += "<li><i>" + dbopd.getDisplayName() + "</i>";
                            propertiesDescription += "</br>" + dbopd.getShortDescription().replace("|", "") + "</li>";
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return propertiesDescription.isEmpty() ? "" : "<ul>" + propertiesDescription + "</ul>";
            }

            @Override
            protected DatabaseObject createBean() {
                DatabaseObject dbo = bean.createBean();
                return dbo;
            }
        });
    }
    Collections.sort(components, new Comparator<Component>() {

        @Override
        public int compare(Component c1, Component c2) {
            return c1.getLabel().compareTo(c2.getLabel());
        }
    });
    return components = Collections.unmodifiableList(components);
}
Also used : Arrays(java.util.Arrays) UIAppEvent(com.twinsoft.convertigo.beans.mobile.components.UIAppEvent) UIActionFailureEvent(com.twinsoft.convertigo.beans.mobile.components.UIActionFailureEvent) UIUseShared(com.twinsoft.convertigo.beans.mobile.components.UIUseShared) Map(java.util.Map) BeanDescriptor(java.beans.BeanDescriptor) UIActionErrorEvent(com.twinsoft.convertigo.beans.mobile.components.UIActionErrorEvent) UIFormCustomValidator(com.twinsoft.convertigo.beans.mobile.components.UIFormCustomValidator) UIActionLoopEvent(com.twinsoft.convertigo.beans.mobile.components.UIActionLoopEvent) GenericUtils(com.twinsoft.convertigo.engine.util.GenericUtils) UIEventSubscriber(com.twinsoft.convertigo.beans.mobile.components.UIEventSubscriber) UIDynamicIf(com.twinsoft.convertigo.beans.mobile.components.UIDynamicIf) UIComponent(com.twinsoft.convertigo.beans.mobile.components.UIComponent) UIStackVariable(com.twinsoft.convertigo.beans.mobile.components.UIStackVariable) UIControlEvent(com.twinsoft.convertigo.beans.mobile.components.UIControlEvent) IntrospectionException(java.beans.IntrospectionException) InvocationTargetException(java.lang.reflect.InvocationTargetException) IOUtils(org.apache.commons.io.IOUtils) List(java.util.List) IAction(com.twinsoft.convertigo.beans.mobile.components.IAction) UIPageEvent(com.twinsoft.convertigo.beans.mobile.components.UIPageEvent) PropertyDescriptor(java.beans.PropertyDescriptor) UIActionStack(com.twinsoft.convertigo.beans.mobile.components.UIActionStack) UICompVariable(com.twinsoft.convertigo.beans.mobile.components.UICompVariable) MobileComponent(com.twinsoft.convertigo.beans.mobile.components.MobileComponent) URLUtils(com.twinsoft.convertigo.engine.util.URLUtils) SortedMap(java.util.SortedMap) UIAttribute(com.twinsoft.convertigo.beans.mobile.components.UIAttribute) UIText(com.twinsoft.convertigo.beans.mobile.components.UIText) UIActionElseEvent(com.twinsoft.convertigo.beans.mobile.components.UIActionElseEvent) UICustom(com.twinsoft.convertigo.beans.mobile.components.UICustom) WeakValueHashMap(com.twinsoft.convertigo.engine.util.WeakValueHashMap) UIAnimation(com.twinsoft.convertigo.beans.mobile.components.UIAnimation) ArrayList(java.util.ArrayList) UIControlVariable(com.twinsoft.convertigo.beans.mobile.components.UIControlVariable) UIFormValidator(com.twinsoft.convertigo.beans.mobile.components.UIFormValidator) Introspector(java.beans.Introspector) UIFormControlValidator(com.twinsoft.convertigo.beans.mobile.components.UIFormControlValidator) UIDynamicIterate(com.twinsoft.convertigo.beans.mobile.components.UIDynamicIterate) UIDynamicMenu(com.twinsoft.convertigo.beans.mobile.components.UIDynamicMenu) UICustomAction(com.twinsoft.convertigo.beans.mobile.components.UICustomAction) BeanInfo(java.beans.BeanInfo) MySimpleBeanInfo(com.twinsoft.convertigo.beans.core.MySimpleBeanInfo) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) UIForm(com.twinsoft.convertigo.beans.mobile.components.UIForm) UIStyle(com.twinsoft.convertigo.beans.mobile.components.UIStyle) Iterator(java.util.Iterator) MobileSmartSourceType(com.twinsoft.convertigo.beans.mobile.components.MobileSmartSourceType) Engine(com.twinsoft.convertigo.engine.Engine) JSONObject(org.codehaus.jettison.json.JSONObject) UIElement(com.twinsoft.convertigo.beans.mobile.components.UIElement) File(java.io.File) UISharedComponent(com.twinsoft.convertigo.beans.mobile.components.UISharedComponent) UITheme(com.twinsoft.convertigo.beans.mobile.components.UITheme) UIActionFinallyEvent(com.twinsoft.convertigo.beans.mobile.components.UIActionFinallyEvent) TreeMap(java.util.TreeMap) PageComponent(com.twinsoft.convertigo.beans.mobile.components.PageComponent) JSONException(org.codehaus.jettison.json.JSONException) UIActionEvent(com.twinsoft.convertigo.beans.mobile.components.UIActionEvent) FileUtils(com.twinsoft.convertigo.engine.util.FileUtils) ApplicationComponent(com.twinsoft.convertigo.beans.mobile.components.ApplicationComponent) Comparator(java.util.Comparator) Collections(java.util.Collections) UIControlDirective(com.twinsoft.convertigo.beans.mobile.components.UIControlDirective) InputStream(java.io.InputStream) UIDynamicMenuItem(com.twinsoft.convertigo.beans.mobile.components.UIDynamicMenuItem) UIPageEvent(com.twinsoft.convertigo.beans.mobile.components.UIPageEvent) UIUseShared(com.twinsoft.convertigo.beans.mobile.components.UIUseShared) BeanInfo(java.beans.BeanInfo) MySimpleBeanInfo(com.twinsoft.convertigo.beans.core.MySimpleBeanInfo) UIControlDirective(com.twinsoft.convertigo.beans.mobile.components.UIControlDirective) UIControlVariable(com.twinsoft.convertigo.beans.mobile.components.UIControlVariable) UISharedComponent(com.twinsoft.convertigo.beans.mobile.components.UISharedComponent) Comparator(java.util.Comparator) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) List(java.util.List) ArrayList(java.util.ArrayList) UIActionFailureEvent(com.twinsoft.convertigo.beans.mobile.components.UIActionFailureEvent) UIComponent(com.twinsoft.convertigo.beans.mobile.components.UIComponent) UIAnimation(com.twinsoft.convertigo.beans.mobile.components.UIAnimation) UIFormCustomValidator(com.twinsoft.convertigo.beans.mobile.components.UIFormCustomValidator) InvocationTargetException(java.lang.reflect.InvocationTargetException) UIDynamicMenu(com.twinsoft.convertigo.beans.mobile.components.UIDynamicMenu) UIStyle(com.twinsoft.convertigo.beans.mobile.components.UIStyle) UIDynamicMenuItem(com.twinsoft.convertigo.beans.mobile.components.UIDynamicMenuItem) UIActionElseEvent(com.twinsoft.convertigo.beans.mobile.components.UIActionElseEvent) UIElement(com.twinsoft.convertigo.beans.mobile.components.UIElement) UICustom(com.twinsoft.convertigo.beans.mobile.components.UICustom) UIAppEvent(com.twinsoft.convertigo.beans.mobile.components.UIAppEvent) UITheme(com.twinsoft.convertigo.beans.mobile.components.UITheme) UIActionErrorEvent(com.twinsoft.convertigo.beans.mobile.components.UIActionErrorEvent) UIForm(com.twinsoft.convertigo.beans.mobile.components.UIForm) UIEventSubscriber(com.twinsoft.convertigo.beans.mobile.components.UIEventSubscriber) UIControlEvent(com.twinsoft.convertigo.beans.mobile.components.UIControlEvent) UIText(com.twinsoft.convertigo.beans.mobile.components.UIText) UIActionLoopEvent(com.twinsoft.convertigo.beans.mobile.components.UIActionLoopEvent) UIComponent(com.twinsoft.convertigo.beans.mobile.components.UIComponent) MobileComponent(com.twinsoft.convertigo.beans.mobile.components.MobileComponent) UISharedComponent(com.twinsoft.convertigo.beans.mobile.components.UISharedComponent) PageComponent(com.twinsoft.convertigo.beans.mobile.components.PageComponent) ApplicationComponent(com.twinsoft.convertigo.beans.mobile.components.ApplicationComponent) UICompVariable(com.twinsoft.convertigo.beans.mobile.components.UICompVariable) PropertyDescriptor(java.beans.PropertyDescriptor) ApplicationComponent(com.twinsoft.convertigo.beans.mobile.components.ApplicationComponent) UIStackVariable(com.twinsoft.convertigo.beans.mobile.components.UIStackVariable) IntrospectionException(java.beans.IntrospectionException) InvocationTargetException(java.lang.reflect.InvocationTargetException) JSONException(org.codehaus.jettison.json.JSONException) UIActionStack(com.twinsoft.convertigo.beans.mobile.components.UIActionStack) UIAttribute(com.twinsoft.convertigo.beans.mobile.components.UIAttribute) UIFormControlValidator(com.twinsoft.convertigo.beans.mobile.components.UIFormControlValidator) UIActionFinallyEvent(com.twinsoft.convertigo.beans.mobile.components.UIActionFinallyEvent) UICustomAction(com.twinsoft.convertigo.beans.mobile.components.UICustomAction)

Aggregations

UIComponent (com.twinsoft.convertigo.beans.mobile.components.UIComponent)26 DatabaseObject (com.twinsoft.convertigo.beans.core.DatabaseObject)13 UISharedComponent (com.twinsoft.convertigo.beans.mobile.components.UISharedComponent)13 PageComponent (com.twinsoft.convertigo.beans.mobile.components.PageComponent)10 ApplicationComponent (com.twinsoft.convertigo.beans.mobile.components.ApplicationComponent)9 UIActionStack (com.twinsoft.convertigo.beans.mobile.components.UIActionStack)9 EngineException (com.twinsoft.convertigo.engine.EngineException)8 CoreException (org.eclipse.core.runtime.CoreException)7 UIUseShared (com.twinsoft.convertigo.beans.mobile.components.UIUseShared)6 MobileSmartSourceType (com.twinsoft.convertigo.beans.mobile.components.MobileSmartSourceType)5 JSONException (org.codehaus.jettison.json.JSONException)5 JSONObject (org.codehaus.jettison.json.JSONObject)5 MobileComponent (com.twinsoft.convertigo.beans.mobile.components.MobileComponent)4 SourceData (com.twinsoft.convertigo.beans.mobile.components.MobileSmartSource.SourceData)4 UICustomAction (com.twinsoft.convertigo.beans.mobile.components.UICustomAction)4 UnsupportedEncodingException (java.io.UnsupportedEncodingException)4 ArrayList (java.util.ArrayList)4 TreeObjectEvent (com.twinsoft.convertigo.eclipse.views.projectexplorer.TreeObjectEvent)3 File (java.io.File)3 FullSyncConnector (com.twinsoft.convertigo.beans.connectors.FullSyncConnector)2