use of com.twinsoft.convertigo.eclipse.views.mobile.MobilePickerContentProvider.TVObject in project convertigo by convertigo.
the class MobilePickerComposite method makeUI.
private void makeUI(Composite parent) {
parent.setLayout(new GridLayout(1, false));
parent.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
SelectionListener listener = new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
final MobilePickerContentProvider contentProvider = (MobilePickerContentProvider) checkboxTreeViewer.getContentProvider();
if (contentProvider != null) {
btnSequence.setSelection(false);
btnDatabase.setSelection(false);
btnAction.setSelection(false);
btnShared.setSelection(false);
btnIteration.setSelection(false);
btnForm.setSelection(false);
btnGlobal.setSelection(false);
ToolItem button = (ToolItem) e.widget;
button.setSelection(true);
if (btnSequence.getSelection()) {
contentProvider.setFilterBy(Filter.Sequence);
} else if (btnDatabase.getSelection()) {
contentProvider.setFilterBy(Filter.Database);
} else if (btnAction.getSelection()) {
contentProvider.setFilterBy(Filter.Action);
} else if (btnShared.getSelection()) {
contentProvider.setFilterBy(Filter.Shared);
} else if (btnIteration.getSelection()) {
contentProvider.setFilterBy(Filter.Iteration);
} else if (btnForm.getSelection()) {
contentProvider.setFilterBy(Filter.Form);
} else if (btnGlobal.getSelection()) {
contentProvider.setFilterBy(Filter.Global);
}
modelTreeViewer.setInput(null);
checkboxTreeViewer.getTree().removeAll();
checkboxTreeViewer.refresh();
initTreeSelection(checkboxTreeViewer, null);
}
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
};
SelectionListener c_listener = new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
boolean isCustom = b_custom.getSelection();
boolean doSetCustomText = false;
if (isParentDialog) {
MobileSmartSource cs = MobileSmartSource.valueOf(currentSource);
if (cs != null && cs.getModel() != null && cs.getModel().getCustom().isEmpty()) {
doSetCustomText = true;
}
} else {
doSetCustomText = true;
}
if (doSetCustomText) {
MobileSmartSource nmss = MobileSmartSource.valueOf(getSmartSourceString());
if (nmss != null) {
if (isCustom && !t_custom.getEnabled()) {
t_custom.setText(nmss.getModel().computeValue());
}
if (!isCustom && t_custom.getEnabled()) {
t_custom.setText("");
}
}
}
t_custom.setEnabled(isCustom);
t_prefix.setEnabled(!isCustom);
t_data.setEnabled(!isCustom);
t_suffix.setEnabled(!isCustom);
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
};
headerComposite = new Composite(parent, SWT.NONE);
headerComposite.setLayout(SwtUtils.newGridLayout(2, false, 0, 0, 0, 0));
headerComposite.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 1, 1));
ToolBar toolbar = new ToolBar(headerComposite, SWT.NONE);
int btnStyle = SWT.CHECK;
Image image = null;
btnSequence = new ToolItem(toolbar, btnStyle);
try {
image = ConvertigoPlugin.getDefault().getIconFromPath("/com/twinsoft/convertigo/beans/core/images/sequence_color_16x16.png", BeanInfo.ICON_COLOR_16x16);
} catch (Exception e) {
btnSequence.setText("SQ");
}
btnSequence.setImage(image);
btnSequence.setToolTipText("Show Sequence Sources");
btnSequence.addSelectionListener(listener);
btnSequence.setSelection(true);
btnDatabase = new ToolItem(toolbar, btnStyle);
try {
image = ConvertigoPlugin.getDefault().getIconFromPath("/com/twinsoft/convertigo/beans/connectors/images/fullsyncconnector_color_16x16.png", BeanInfo.ICON_COLOR_16x16);
} catch (Exception e) {
btnDatabase.setText("FS");
}
btnDatabase.setImage(image);
btnDatabase.setToolTipText("Show FullSync Databases Sources");
btnDatabase.addSelectionListener(listener);
btnAction = new ToolItem(toolbar, btnStyle);
try {
image = ConvertigoPlugin.getDefault().getIconFromPath("/com/twinsoft/convertigo/beans/mobile/components/images/uicustomaction_color_16x16.png", BeanInfo.ICON_COLOR_16x16);
} catch (Exception e) {
btnAction.setText("AC");
}
btnAction.setImage(image);
btnAction.setToolTipText("Show Action Sources");
btnAction.addSelectionListener(listener);
btnShared = new ToolItem(toolbar, btnStyle);
try {
image = ConvertigoPlugin.getDefault().getIconFromPath("/com/twinsoft/convertigo/beans/mobile/components/images/uisharedcomponent_color_16x16.png", BeanInfo.ICON_COLOR_16x16);
} catch (Exception e) {
btnShared.setText("SH");
}
btnShared.setImage(image);
btnShared.setToolTipText("Show Shared component Sources");
btnShared.addSelectionListener(listener);
btnIteration = new ToolItem(toolbar, btnStyle);
try {
image = ConvertigoPlugin.getDefault().getIconFromPath("/com/twinsoft/convertigo/beans/steps/images/iterator_16x16.png", BeanInfo.ICON_COLOR_16x16);
} catch (Exception e) {
btnIteration.setText("IT");
}
btnIteration.setImage(image);
btnIteration.setToolTipText("Show Iterators on current page Sources");
btnIteration.addSelectionListener(listener);
btnForm = new ToolItem(toolbar, btnStyle);
try {
image = ConvertigoPlugin.getDefault().getIconFromPath("/com/twinsoft/convertigo/beans/mobile/components/images/uiform_color_16x16.png", BeanInfo.ICON_COLOR_16x16);
} catch (Exception e) {
btnForm.setText("FM");
}
btnForm.setImage(image);
btnForm.setToolTipText("Show Forms on current page Sources");
btnForm.addSelectionListener(listener);
btnGlobal = new ToolItem(toolbar, btnStyle);
try {
image = ConvertigoPlugin.getDefault().getIconFromPath("/com/twinsoft/convertigo/beans/mobile/components/dynamic/images/setglobalaction_color_16x16.png", BeanInfo.ICON_COLOR_16x16);
} catch (Exception e) {
btnGlobal.setText("GS");
}
btnGlobal.setImage(image);
btnGlobal.setToolTipText("Show Global Shared objects");
btnGlobal.addSelectionListener(listener);
message = new Label(headerComposite, SWT.NONE);
message.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
SashForm treesSashForm = new SashForm(parent, SWT.NONE);
treesSashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
checkboxTreeViewer = new CheckboxTreeViewer(treesSashForm, SWT.BORDER | SWT.SINGLE);
checkboxTreeViewer.setContentProvider(new MobilePickerContentProvider());
checkboxTreeViewer.addCheckStateListener(new ICheckStateListener() {
@Override
public void checkStateChanged(CheckStateChangedEvent event) {
Object element = event.getElement();
if (element instanceof TVObject) {
if (btnIteration.getSelection() || btnForm.getSelection() || btnGlobal.getSelection()) {
checkboxTreeViewer.setChecked(element, !event.getChecked());
return;
}
TVObject tvoChecked = (TVObject) element;
if (event.getChecked())
checkedList.add(tvoChecked);
else
checkedList.remove(tvoChecked);
updateGrayChecked();
updateTexts();
}
}
});
checkboxTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
Object selected = ((IStructuredSelection) event.getSelection()).getFirstElement();
if (selected instanceof TVObject && !selected.equals(lastSelected)) {
TVObject tvoSelected = (TVObject) selected;
lastSelected = selected;
if (firstSelected == null) {
firstSelected = selected;
}
checkedList.clear();
checkedList.add(tvoSelected);
modelTreeViewer.setInput(null);
updateModel(tvoSelected);
updateGrayChecked();
updateTexts();
}
}
});
modelTreeViewer = new TreeViewer(treesSashForm, SWT.BORDER);
modelTreeViewer.setContentProvider(new MobilePickerContentProvider());
modelTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
Object selected = ((IStructuredSelection) event.getSelection()).getFirstElement();
if (selected instanceof TVObject) {
updateTexts();
}
}
});
treesSashForm.setWeights(new int[] { 1, 1 });
Composite sourceComposite = new Composite(parent, SWT.NONE);
sourceComposite.setLayout(new GridLayout(2, false));
sourceComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
if (isParentDialog) {
l_source = new Label(sourceComposite, SWT.NONE);
((Label) l_source).setText(" SOURCE ");
} else {
l_source = new Button(sourceComposite, SWT.NONE);
((Button) l_source).setText(" SOURCE ");
l_source.setToolTipText("Drag me on a Mobile UI component in the project tree to bind this source to an UI component property");
}
Composite dataComposite = new Composite(sourceComposite, SWT.NONE);
dataComposite.setLayout(new GridLayout(2, false));
dataComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
Label l_prefix = new Label(dataComposite, SWT.NONE);
l_prefix.setText("Prefix");
t_prefix = new Text(dataComposite, SWT.BORDER);
t_prefix.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
Label l_data = new Label(dataComposite, SWT.NONE);
l_data.setText("Data");
t_data = new Text(dataComposite, SWT.BORDER | SWT.READ_ONLY);
t_data.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
Label l_suffix = new Label(dataComposite, SWT.NONE);
l_suffix.setText("Suffix");
t_suffix = new Text(dataComposite, SWT.BORDER);
t_suffix.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
b_custom = new Button(dataComposite, SWT.CHECK);
b_custom.setText("Custom");
b_custom.addSelectionListener(c_listener);
t_custom = new Text(dataComposite, SWT.BORDER);
t_custom.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
t_custom.setEnabled(false);
// Add DND support
boolean dragEnabled = !isParentDialog;
if (dragEnabled) {
Transfer[] dragTransfers = new Transfer[] { MobileSourceTransfer.getInstance() };
int operations = DND.DROP_COPY | DND.DROP_MOVE;
DragSourceAdapter dragAdapter = new DragSourceAdapter() {
@Override
public void dragStart(DragSourceEvent event) {
try {
String jsonString = getSmartSourceString();
if (jsonString != null && !jsonString.isEmpty()) {
event.doit = true;
MobileSourceTransfer.getInstance().setMobileSource(new MobileSource(jsonString));
}
} catch (Exception e) {
ConvertigoPlugin.logException(e, "Cannot drag");
}
}
};
DragSource source = null;
source = new DragSource(modelTreeViewer.getTree(), operations);
source.setTransfer(dragTransfers);
source.addDragListener(dragAdapter);
source = new DragSource(l_source, operations);
source.setTransfer(dragTransfers);
source.addDragListener(dragAdapter);
}
}
use of com.twinsoft.convertigo.eclipse.views.mobile.MobilePickerContentProvider.TVObject in project convertigo by convertigo.
the class MobilePickerComposite method lookupModelData.
private Map<String, Object> lookupModelData(TVObject tvObject) {
Map<String, Object> data = new HashMap<String, Object>();
Map<String, String> params = new HashMap<String, String>();
DatabaseObject dbo = null;
String searchPath = "";
Object object = tvObject.getObject();
JSONObject infos = tvObject.getInfos();
if (object != null) {
try {
if (object instanceof RequestableObject) {
dbo = (RequestableObject) object;
searchPath = "";
} else if (object instanceof DesignDocument) {
dbo = (DesignDocument) object;
DesignDocument dd = (DesignDocument) dbo;
params.put("ddoc", dd.getName());
params.put("view", tvObject.getParent().getName());
params.put("include_docs", infos.has("include_docs") ? infos.getString("include_docs") : "false");
searchPath = tvObject.getName().startsWith("get") ? ".rows.value" : "";
} else if (object instanceof UIControlDirective) {
dbo = (UIControlDirective) object;
do {
UIControlDirective directive = (UIControlDirective) dbo;
String rootDboName = "";
if (directive.getPage() != null) {
rootDboName = directive.getPage().getName();
} else if (directive.getMenu() != null) {
rootDboName = directive.getMenu().getName();
}
MobileSmartSourceType msst = directive.getSourceSmartType();
MobileSmartSource mss = msst.getSmartSource();
if (mss != null) {
dbo = mss.getDatabaseObject(rootDboName);
params.putAll(mss.getParameters());
searchPath = mss.getModelPath().replaceAll("\\?\\.", ".") + searchPath;
} else {
dbo = null;
}
} while (dbo != null && dbo instanceof UIControlDirective);
} else if (object instanceof UIForm) {
dbo = (UIForm) object;
searchPath = "";
} else if (object instanceof ApplicationComponent) {
dbo = (ApplicationComponent) object;
params.put("json", infos.toString());
searchPath = "";
} else if (object instanceof UIActionStack) {
dbo = (UIActionStack) object;
searchPath = "";
} else if (object instanceof IAction) {
if (object instanceof UIDynamicAction) {
dbo = (UIDynamicAction) object;
searchPath = "";
} else if (object instanceof UICustomAction) {
dbo = (UICustomAction) object;
searchPath = "";
}
} else if (object instanceof UISharedComponent) {
dbo = (UISharedComponent) object;
searchPath = "";
}
} catch (Exception e) {
e.printStackTrace();
}
}
data.put("databaseObject", dbo);
data.put("params", params);
data.put("searchPath", searchPath);
return data;
}
use of com.twinsoft.convertigo.eclipse.views.mobile.MobilePickerContentProvider.TVObject in project convertigo by convertigo.
the class MobilePickerComposite method getModelPath.
private String getModelPath() {
String path = "";
ITreeSelection selection = modelTreeViewer.getStructuredSelection();
if (selection != null && !selection.isEmpty()) {
TVObject tvo = (TVObject) selection.getFirstElement();
path = tvo.getPath();
}
return path;
}
use of com.twinsoft.convertigo.eclipse.views.mobile.MobilePickerContentProvider.TVObject in project convertigo by convertigo.
the class MobilePickerComposite method findModelItem.
private TVObject findModelItem(TreeItem parent, String modelPath) {
if (modelPath != null && !modelPath.isEmpty()) {
TreeItem[] items = null;
items = parent == null ? modelTreeViewer.getTree().getItems() : parent.getItems();
for (int i = 0; i < items.length; i++) {
TreeItem treeItem = items[i];
TVObject tvo = (TVObject) treeItem.getData();
if (tvo != null) {
String tvoPath = tvo.getPath().replaceAll("\\?\\.", ".");
if (modelPath.startsWith(tvoPath.replaceFirst("root", ""))) {
if (modelPath.equals(tvoPath.replaceFirst("root", ""))) {
return tvo;
}
return findModelItem(items[i], modelPath);
}
}
}
}
return null;
}
Aggregations