use of com.twinsoft.convertigo.beans.ngx.components.UIDynamicMenu in project convertigo by convertigo.
the class NgxApplicationComponentTreeObject method treeObjectPropertyChanged.
@Override
public void treeObjectPropertyChanged(TreeObjectEvent treeObjectEvent) {
super.treeObjectPropertyChanged(treeObjectEvent);
TreeObject treeObject = (TreeObject) treeObjectEvent.getSource();
Set<Object> done = checkDone(treeObjectEvent);
String propertyName = (String) treeObjectEvent.propertyName;
propertyName = ((propertyName == null) ? "" : propertyName);
Object oldValue = treeObjectEvent.oldValue;
Object newValue = treeObjectEvent.newValue;
if (treeObject instanceof DatabaseObjectTreeObject) {
DatabaseObjectTreeObject doto = (DatabaseObjectTreeObject) treeObject;
DatabaseObject dbo = doto.getObject();
try {
ApplicationComponent ac = getObject();
// for Page or Menu or Route
if (ac.equals(dbo.getParent())) {
markApplicationAsDirty(done);
} else // for any component inside a route
if (ac.equals(dbo.getParent().getParent())) {
markApplicationAsDirty(done);
} else // for any UI component inside a menu or a stack
if (dbo instanceof UIComponent) {
UIComponent uic = (UIComponent) dbo;
UIDynamicMenu menu = uic.getMenu();
if (menu != null) {
if (ac.equals(menu.getParent())) {
// if (propertyName.equals("FormControlName") || uic.isFormControlAttribute()) {
// if (!newValue.equals(oldValue)) {
// try {
// String oldSmart = ((MobileSmartSourceType)oldValue).getSmartValue();
// String newSmart = ((MobileSmartSourceType)newValue).getSmartValue();
// if (uic.getUIForm() != null) {
// String form = uic.getUIForm().getFormGroupName();
// if (menu.updateSmartSource(form+"\\?\\.controls\\['"+oldSmart+"'\\]", form+"?.controls['"+newSmart+"']")) {
// this.viewer.refresh();
// }
// }
// } catch (Exception e) {}
// }
// }
markApplicationAsDirty(done);
}
}
} else // for this application
if (this.equals(doto)) {
if (propertyName.equals("isPWA")) {
if (!newValue.equals(oldValue)) {
markPwaAsDirty();
}
} else if (propertyName.equals("componentScriptContent")) {
if (!newValue.equals(oldValue)) {
markComponentTsAsDirty();
markApplicationAsDirty(done);
}
} else if (propertyName.equals("useClickForTap")) {
for (TreeObject to : this.getChildren()) {
if (to instanceof ObjectsFolderTreeObject) {
ObjectsFolderTreeObject ofto = (ObjectsFolderTreeObject) to;
if (ofto.folderType == ObjectsFolderTreeObject.FOLDER_TYPE_PAGES) {
for (TreeObject cto : ofto.getChildren()) {
if (cto instanceof NgxPageComponentTreeObject) {
((NgxPageComponentTreeObject) cto).markPageAsDirty(done);
}
}
}
}
}
markApplicationAsDirty(done);
} else if (propertyName.equals("tplProjectName")) {
// close app editor and reinitialize builder
Project project = ac.getProject();
closeAllEditors(false);
MobileBuilder.releaseBuilder(project);
MobileBuilder.initBuilder(project);
IProject iproject = ConvertigoPlugin.getDefault().getProjectPluginResource(project.getName());
iproject.refreshLocal(IResource.DEPTH_INFINITE, null);
// force app sources regeneration
for (TreeObject to : this.getChildren()) {
if (to instanceof ObjectsFolderTreeObject) {
ObjectsFolderTreeObject ofto = (ObjectsFolderTreeObject) to;
if (ofto.folderType == ObjectsFolderTreeObject.FOLDER_TYPE_PAGES) {
for (TreeObject cto : ofto.getChildren()) {
if (cto instanceof NgxPageComponentTreeObject) {
((NgxPageComponentTreeObject) cto).markPageAsDirty(done);
}
}
}
}
}
markApplicationAsDirty(done);
// delete node modules and alert user
final File nodeModules = new File(project.getDirPath(), "/_private/ionic/node_modules");
if (nodeModules.exists()) {
ProgressMonitorDialog dialog = new ProgressMonitorDialog(ConvertigoPlugin.getMainShell());
dialog.open();
dialog.run(true, false, new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
monitor.beginTask("deleting node modules", IProgressMonitor.UNKNOWN);
String alert = "template changed!";
if (com.twinsoft.convertigo.engine.util.FileUtils.deleteQuietly(nodeModules)) {
alert = "You have just changed the template.\nPackages have been deleted and will be reinstalled next time you run your application again.";
} else {
alert = "You have just changed the template: packages could not be deleted!\nDo not forget to reinstall the packages before running your application again, otherwise it may be corrupted!";
}
monitor.done();
ConvertigoPlugin.infoMessageBox(alert);
}
});
}
} else {
markApplicationAsDirty(done);
}
}
} catch (Exception e) {
}
}
}
use of com.twinsoft.convertigo.beans.ngx.components.UIDynamicMenu 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(UIAppGuard.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.ngx.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);
}
use of com.twinsoft.convertigo.beans.ngx.components.UIDynamicMenu in project convertigo by convertigo.
the class NgxPageComponentTreeObject method getNamedSourceSelector.
@Override
public NamedSourceSelector getNamedSourceSelector() {
return new NamedSourceSelector() {
@Override
Object thisTreeObject() {
return NgxPageComponentTreeObject.this;
}
@Override
protected List<String> getPropertyNamesForSource(Class<?> c) {
List<String> list = new ArrayList<String>();
if (getObject() instanceof PageComponent) {
if (ProjectTreeObject.class.isAssignableFrom(c) || MobileApplicationTreeObject.class.isAssignableFrom(c) || NgxApplicationComponentTreeObject.class.isAssignableFrom(c) || NgxUIComponentTreeObject.class.isAssignableFrom(c)) {
list.add("startMenu");
list.add("endMenu");
}
}
return list;
}
@Override
protected boolean isNamedSource(String propertyName) {
if (getObject() instanceof PageComponent) {
return "startMenu".equals(propertyName) || "endMenu".equals(propertyName);
}
return false;
}
@Override
public boolean isSelectable(String propertyName, Object nsObject) {
if (getObject() instanceof PageComponent) {
if ("startMenu".equals(propertyName) || "endMenu".equals(propertyName)) {
PageComponent pc = getObject();
if (nsObject instanceof UIDynamicMenu) {
return (((UIDynamicMenu) nsObject).getProject().equals(pc.getProject()));
}
}
}
return false;
}
@Override
protected void handleSourceCleared(String propertyName) {
// nothing to do
}
@Override
protected void handleSourceRenamed(String propertyName, String oldName, String newName) {
if (isNamedSource(propertyName)) {
boolean hasBeenRenamed = false;
String pValue = (String) getPropertyValue(propertyName);
if (pValue != null && pValue.startsWith(oldName)) {
String _pValue = newName + pValue.substring(oldName.length());
if (!pValue.equals(_pValue)) {
if (getObject() instanceof PageComponent) {
if ("startMenu".equals(propertyName)) {
getObject().setStartMenu(_pValue);
hasBeenRenamed = true;
}
if ("endMenu".equals(propertyName)) {
getObject().setEndMenu(_pValue);
hasBeenRenamed = true;
}
}
}
}
if (hasBeenRenamed) {
hasBeenModified(true);
ConvertigoPlugin.projectManager.getProjectExplorerView().updateTreeObject(NgxPageComponentTreeObject.this);
// refresh editors (e.g labels in combobox)
getDescriptors();
TreeObjectEvent treeObjectEvent = new TreeObjectEvent(NgxPageComponentTreeObject.this, propertyName, "", "");
ConvertigoPlugin.projectManager.getProjectExplorerView().fireTreeObjectPropertyChanged(treeObjectEvent);
}
}
}
};
}
Aggregations