Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.osbp.xtext.table.ui/src')
-rw-r--r--org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLDocumentationTranslator.java32
-rw-r--r--org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHover.java25
-rw-r--r--org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHoverDocumentationProvider.java35
-rw-r--r--org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHoverProvider.java36
-rw-r--r--org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLUiModule.java51
-rw-r--r--org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/contentassist/TableDSLProposalProvider.xtend710
-rw-r--r--org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/labeling/TableDSLDescriptionLabelProvider.xtend38
-rw-r--r--org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/labeling/TableDSLLabelProvider.xtend156
-rw-r--r--org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/outline/TableDSLOutlineTreeProvider.xtend27
-rw-r--r--org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/quickfix/TableDSLQuickfixProvider.xtend40
10 files changed, 1150 insertions, 0 deletions
diff --git a/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLDocumentationTranslator.java
new file mode 100644
index 0000000..7c29909
--- /dev/null
+++ b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLDocumentationTranslator.java
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ */
+package org.eclipse.osbp.xtext.table.ui;
+
+import java.util.ResourceBundle;
+
+import org.eclipse.osbp.utils.constants.GeneratorConstants;
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+
+public class TableDSLDocumentationTranslator extends BasicDSLDocumentationTranslator {
+
+ private static TableDSLDocumentationTranslator INSTANCE = new TableDSLDocumentationTranslator();
+
+ public static BasicDSLDocumentationTranslator instance() {
+ return INSTANCE;
+ }
+
+ @Override
+ protected ResourceBundle getResourceBundle() {
+ return java.util.ResourceBundle.getBundle(GeneratorConstants.I18N_RESOURCE_FULL_BUNDLE_NAME, getLocale(), getClass().getClassLoader());
+ }
+}
diff --git a/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHover.java b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHover.java
new file mode 100644
index 0000000..084f5c5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHover.java
@@ -0,0 +1,25 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ */
+package org.eclipse.osbp.xtext.table.ui;
+
+import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHover;
+
+public class TableDSLEObjectHover extends BasicDSLEObjectHover {
+
+ @Override
+ public IEObjectHoverProvider getHoverProvider() {
+ return TableDSLEObjectHoverProvider.instance();
+ }
+}
diff --git a/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHoverDocumentationProvider.java b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHoverDocumentationProvider.java
new file mode 100644
index 0000000..0acf174
--- /dev/null
+++ b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHoverDocumentationProvider.java
@@ -0,0 +1,35 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ */
+package org.eclipse.osbp.xtext.table.ui;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverDocumentationProvider;
+
+public class TableDSLEObjectHoverDocumentationProvider extends BasicDSLEObjectHoverDocumentationProvider {
+
+ private static TableDSLEObjectHoverDocumentationProvider INSTANCE;
+
+ public static TableDSLEObjectHoverDocumentationProvider instance() {
+ return INSTANCE;
+ }
+
+ public TableDSLEObjectHoverDocumentationProvider() {
+ super();
+ INSTANCE = this;
+ }
+
+ @Override
+ protected BasicDSLDocumentationTranslator getTranslator() {
+ return TableDSLDocumentationTranslator.instance();
+ }
+}
diff --git a/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHoverProvider.java b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHoverProvider.java
new file mode 100644
index 0000000..7fbd5c8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLEObjectHoverProvider.java
@@ -0,0 +1,36 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ */
+package org.eclipse.osbp.xtext.table.ui;
+
+import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverProvider;
+
+public class TableDSLEObjectHoverProvider extends BasicDSLEObjectHoverProvider {
+
+ private static TableDSLEObjectHoverProvider INSTANCE;
+
+ public static TableDSLEObjectHoverProvider instance() {
+ return INSTANCE;
+ }
+
+ public TableDSLEObjectHoverProvider() {
+ super();
+ INSTANCE = this;
+ }
+
+ @Override
+ public IEObjectHoverDocumentationProvider getDocumentationHoverProvider() {
+ return TableDSLEObjectHoverDocumentationProvider.instance();
+ }
+}
diff --git a/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLUiModule.java b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLUiModule.java
new file mode 100644
index 0000000..364c8ac
--- /dev/null
+++ b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/TableDSLUiModule.java
@@ -0,0 +1,51 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.xtext.table.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.editor.hover.IEObjectHover;
+import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
+import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class TableDSLUiModule extends org.eclipse.osbp.xtext.table.ui.AbstractTableDSLUiModule {
+
+ private static Logger LOGGER = LoggerFactory.getLogger(TableDSLUiModule.class);
+
+ public TableDSLUiModule(AbstractUIPlugin plugin) {
+ super(plugin);
+ BasicDSLUiModuleHelper.unitTestTemplates(plugin, LOGGER);
+ }
+
+ @Override
+ public Class<? extends IEObjectHover> bindIEObjectHover() {
+ return TableDSLEObjectHover.class;
+ }
+
+ @Override
+ public Class<? extends IEObjectHoverProvider> bindIEObjectHoverProvider() {
+ return TableDSLEObjectHoverProvider.class;
+ }
+
+ @Override
+ public Class<? extends IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
+ return TableDSLEObjectHoverDocumentationProvider.class;
+ }
+}
diff --git a/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/contentassist/TableDSLProposalProvider.xtend b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/contentassist/TableDSLProposalProvider.xtend
new file mode 100644
index 0000000..d694e07
--- /dev/null
+++ b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/contentassist/TableDSLProposalProvider.xtend
@@ -0,0 +1,710 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ *
+ * This copyright notice shows up in the generated Java code
+ *
+ */
+package org.eclipse.osbp.xtext.table.ui.contentassist
+
+import javax.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.jface.viewers.StyledString
+import org.eclipse.osbp.fork.mihalis.opal.widgets.ImageSelectorDialog
+import org.eclipse.osbp.infogrid.model.gridsource.CxGridProperty
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropBooleanStyle
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropDateStyle
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropHtmlStyle
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropNumberStyle
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropPriceStyle
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropProgressbarStyle
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropQuantityStyle
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropTextStyle
+import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask
+import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer
+import org.eclipse.osbp.xtext.gridsource.scoping.TypeHelper
+import org.eclipse.osbp.xtext.gridsource.ui.contentassist.GridSourceProposalProvider
+import org.eclipse.osbp.xtext.table.Table
+import org.eclipse.osbp.xtext.table.TableAxis
+import org.eclipse.osbp.xtext.table.TableBrokerDatamart
+import org.eclipse.osbp.xtext.table.TableDatamart
+import org.eclipse.osbp.xtext.table.TableEvent
+import org.eclipse.osbp.xtext.table.TableInterval
+import org.eclipse.osbp.xtext.table.TableLookup
+import org.eclipse.osbp.xtext.table.TablePreorder
+import org.eclipse.osbp.xtext.table.TableRangeElement
+import org.eclipse.osbp.xtext.table.TableTable
+import org.eclipse.osbp.xtext.table.TableValue
+import org.eclipse.osbp.xtext.table.ui.TableDSLDocumentationTranslator
+import org.eclipse.swt.graphics.Point
+import org.eclipse.swt.layout.FillLayout
+import org.eclipse.swt.widgets.ColorDialog
+import org.eclipse.swt.widgets.Shell
+import org.eclipse.xtext.AbstractElement
+import org.eclipse.xtext.Assignment
+import org.eclipse.xtext.Keyword
+import org.eclipse.xtext.ParserRule
+import org.eclipse.xtext.RuleCall
+import org.eclipse.xtext.XtextPackage
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider
+import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor
+import org.eclipse.xtext.ui.editor.contentassist.ReplacementTextApplier
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropButtonStyle
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropImageStyle
+
+class ImageFileNameTextApplier extends ReplacementTextApplier {
+ var ContentAssistContext context
+ var String[] extensions
+
+ def setContext(ContentAssistContext context) {
+ this.context = context
+ }
+
+ def setExtensions(String[] fileExtensions) {
+ extensions = fileExtensions
+ }
+
+ // this will inject a file dialog when selecting the file picker proposal
+ override getActualReplacementString(ConfigurableCompletionProposal proposal) {
+ var display = context.getViewer().getTextWidget().getDisplay();
+ var shell = new Shell(display);
+ shell.setLocation(new Point(display.activeShell.location.x + 30, display.activeShell.location.y + 30))
+ shell.setLayout(new FillLayout());
+ var imageSelectorDialog = new ImageSelectorDialog(shell, 16);
+ imageSelectorDialog.setFilterExtensions(extensions)
+ var imageFileName = imageSelectorDialog.open(true);
+ return "\"".concat(imageFileName).concat("\"");
+ }
+}
+
+class MyReplacementTextApplier extends ReplacementTextApplier {
+ var ContentAssistContext context
+
+ def setContext(ContentAssistContext context) {
+ this.context = context
+ }
+
+ // this will inject a color picker when selecting the color picker proposal
+ override getActualReplacementString(ConfigurableCompletionProposal proposal) {
+ var display = context.getViewer().getTextWidget().getDisplay();
+ var colorDialog = new ColorDialog(display.getActiveShell());
+ var newColor = colorDialog.open();
+ return "\"".concat(newColor.red.toString).concat(",").concat(newColor.green.toString).concat(",").concat(
+ newColor.blue.toString).concat("\"");
+ }
+}
+
+class TableDSLProposalProvider extends AbstractTableDSLProposalProvider {
+
+ @Inject extension TypeHelper
+ @Inject TerminalsProposalProvider provider
+ @Inject BasicDSLProposalProviderHelper providerHelper
+
+ @Inject extension DatamartDSLJvmModelInferrer datamartInferrer
+ var imageSelectionPrompt = "Select image file..."
+ var colorSelectionPrompt = "Pick color..."
+ @Inject GridSourceProposalProvider gridProposalProvider
+
+ /**
+ * This override will enable 1 length non letter characters as keyword.
+ */
+ override protected boolean isKeywordWorthyToPropose(Keyword keyword) {
+ return true
+ }
+
+ override protected StyledString getKeywordDisplayString(Keyword keyword) {
+ return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword,
+ TableDSLDocumentationTranslator.instance())
+ }
+
+ /* imageFilePickerProposal(model, assignment, context, acceptor, ".jpg,.jpeg,.png") */
+ def imageFilePickerProposal(EObject model, Assignment assignment, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor, String fileExtensions) {
+ var fileName = createCompletionProposal(imageSelectionPrompt, context) as ConfigurableCompletionProposal
+ if (fileName != null) {
+ var applier = new ImageFileNameTextApplier()
+ applier.setExtensions(fileExtensions.split(","))
+ applier.setContext(context)
+ fileName.setTextApplier = applier
+ }
+ acceptor.accept(fileName)
+ }
+
+ /**
+ * This method decides which proposals will be valid.
+ */
+ override protected boolean isValidProposal(String proposal, String prefix, ContentAssistContext context) {
+ var result = super.isValidProposal(proposal, prefix, context)
+ if (context.currentModel instanceof TableAxis) {
+ return isAxisValidProposal(context, proposal, result)
+ }
+ if (context.currentModel instanceof TableValue || context.getCurrentModel() instanceof TablePreorder ||
+ context.getCurrentModel() instanceof TableEvent) {
+ return isValueValidProposal(context, proposal, result)
+ } else if (context.currentModel instanceof TableInterval || context.currentModel instanceof TableLookup) {
+ return isIntervalValidProposal(context, proposal, result)
+ }
+ return result
+ }
+
+ override createProposals(ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ if (context.currentModel instanceof CxGridProperty && context.lastCompleteNodeIsStyle) {
+ for (AbstractElement element : context.getFirstSetGrammarElements()) {
+ if (element.eClass.classifierID == XtextPackage.KEYWORD) {
+ var keyword = element as Keyword
+ if (isKeywordWorthyToPropose(keyword, context)) {
+ val gridProp = context.currentModel as CxGridProperty
+ val nestedField = gridProp.path
+ val nestedFieldType = nestedField.field.returnType.type
+ var eObject = element as EObject
+ while (!(eObject instanceof ParserRule)) {
+ eObject = eObject.eContainer
+ }
+ if (eObject != null) {
+ var rule = eObject as ParserRule
+
+ if (nestedFieldType.boolean && rule.booleanStyle) {
+ context.setProposal(acceptor, keyword)
+ } else if (nestedFieldType.string && rule.textStyle) {
+ context.setProposal(acceptor, keyword)
+ } else if (nestedFieldType.number) {
+ if (nestedFieldType.isNumberWithDigits && rule.progressStyle){
+ context.setProposal(acceptor, keyword)
+ } else {
+ if (rule.numberStyle){
+ context.setProposal(acceptor, keyword)
+ }
+ }
+ } else if (nestedFieldType.date && rule.dateStyle) {
+ context.setProposal(acceptor, keyword)
+ }
+ }
+ }
+ }
+ }
+ } else {
+ super.createProposals(context, acceptor)
+ }
+ }
+
+ def getLastCompleteNodeIsStyle(ContentAssistContext context) {
+ val element = context.lastCompleteNode?.grammarElement
+ if (element.eClass.classifierID == XtextPackage.KEYWORD) {
+ var keyword = element as Keyword
+ if ("style".equals(keyword.value)){
+ return true
+ }
+ }
+ return false
+ }
+
+ def boolean isBooleanStyle(ParserRule rule){
+ var ruleTypeClass = rule.type?.classifier.instanceClass
+ return typeof(CxGridPropBooleanStyle).equals(ruleTypeClass)
+ }
+
+ def boolean isTextStyle(ParserRule rule){
+ var ruleTypeClass = rule.type?.classifier.instanceClass
+ return (typeof(CxGridPropTextStyle).equals(ruleTypeClass) || typeof(CxGridPropHtmlStyle).equals(ruleTypeClass) || typeof(CxGridPropButtonStyle).equals(ruleTypeClass) || typeof(CxGridPropImageStyle).equals(ruleTypeClass))
+ }
+
+ def boolean isNumberStyle(ParserRule rule){
+ var ruleTypeClass = rule.type?.classifier.instanceClass
+ return (typeof(CxGridPropNumberStyle).equals(ruleTypeClass) || typeof(CxGridPropPriceStyle).equals(ruleTypeClass) || typeof(CxGridPropQuantityStyle).equals(ruleTypeClass) || typeof(CxGridPropImageStyle).equals(ruleTypeClass))
+ }
+
+ def boolean isProgressStyle(ParserRule rule){
+ var ruleTypeClass = rule.type?.classifier.instanceClass
+ return typeof(CxGridPropProgressbarStyle).equals(ruleTypeClass)
+ }
+
+ def boolean isDateStyle(ParserRule rule){
+ var ruleTypeClass = rule.type?.classifier.instanceClass
+ return typeof(CxGridPropDateStyle).equals(ruleTypeClass)
+ }
+
+ def setProposal(ContentAssistContext context, ICompletionProposalAcceptor acceptor, Keyword keyword) {
+ val proposal = createCompletionProposal(keyword.getValue(), getKeywordDisplayString(keyword), getImage(keyword),
+ context);
+ acceptor.accept(proposal)
+
+ }
+
+ override completeTableIcon_Icon(EObject model, Assignment assignment, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+ imageFilePickerProposal(model, assignment, context, acceptor, ".jpg,.jpeg,.png");
+ }
+
+ override completeTableValue_IconName(EObject model, Assignment assignment, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+ imageFilePickerProposal(model, assignment, context, acceptor, ".jpg,.jpeg,.png");
+ }
+
+ override completeTableBrokerDatamart_Filter(EObject model, Assignment assignment, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+ var datamart = (context.currentModel as TableBrokerDatamart)
+ var filterIdList = <String, String>newHashMap()
+ datamartInferrer.createFilterMap(datamart.datamartDef, filterIdList)
+ for (filter : filterIdList.entrySet) {
+ acceptor.accept(createCompletionProposal("\"".concat(filter.value).concat("\""), filter.key, null, context));
+ }
+
+ }
+
+ override completeTableFormatter_Format(EObject model, Assignment assignment, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+
+ // predefined formats
+ acceptor.accept(createCompletionProposal("\"###,##0.00\" /* money */", "money", null, context));
+ acceptor.accept(
+ createCompletionProposal("\"###,##0.00 &curren;\" /* local national currency */", "local national currency",
+ null, context));
+ acceptor.accept(
+ createCompletionProposal("\"###,##0.00 &curren;&curren;\" /* local international currency */",
+ "local international currency", null, context));
+ acceptor.accept(createCompletionProposal("\"#0.000\" /* quantity */", "quantity", null, context));
+ acceptor.accept(
+ createCompletionProposal("\"#0.00;(#0.00)\" /* negative in parentheses */", "negative in parentheses", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"##0.0 %\" /* ratio as percentage */", "ratio as percentage", null, context));
+ acceptor.accept(
+ createCompletionProposal("\"##0.0 %%\" /* ratio as per mill */", "ratio as per mill", null, context));
+ acceptor.accept(createCompletionProposal("\"##0.0'%'\" /* percentage sign */", "percentage sign", null, context));
+ acceptor.accept(createCompletionProposal("\"##0.0'?'\" /* per mill sign */", "per mill sign", null, context));
+ acceptor.accept(createCompletionProposal("\"0.0000000000E00\" /* scientific */", "scientific", null, context));
+ acceptor.accept(createCompletionProposal("\"SHORTDATE\" /* short date */", "short date", null, context));
+ acceptor.accept(createCompletionProposal("\"MEDIUMDATE\" /* medium date */", "medium date", null, context));
+ acceptor.accept(createCompletionProposal("\"LONGDATE\" /* long date */", "long date", null, context));
+ acceptor.accept(createCompletionProposal("\"FULLDATE\" /* full date */", "full date", null, context));
+ acceptor.accept(createCompletionProposal("\"SHORTTIME\" /* short time */", "short time", null, context));
+ acceptor.accept(createCompletionProposal("\"MEDIUMTIME\" /* medium time */", "medium time", null, context));
+ acceptor.accept(createCompletionProposal("\"LONGTIME\" /* long time */", "long time", null, context));
+ acceptor.accept(createCompletionProposal("\"FULLTIME\" /* full time */", "full time", null, context));
+ acceptor.accept(
+ createCompletionProposal("\"SHORTDATESHORTTIME\" /* short date short time */", "short date short time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"SHORTDATEMEDIUMTIME\" /* short date medium time */", "short date medium time",
+ null, context));
+ acceptor.accept(
+ createCompletionProposal("\"SHORTDATELONGTIME\" /* short date long time */", "short date long time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"SHORTDATEFULLTIME\" /* short date full time */", "short date full time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"MEDIUMDATESHORTTIME\" /* medium date short time */", "medium date short time",
+ null, context));
+ acceptor.accept(
+ createCompletionProposal("\"MEDIUMDATEMEDIUMTIME\" /* medium date medium time */", "medium date medium time",
+ null, context));
+ acceptor.accept(
+ createCompletionProposal("\"MEDIUMDATELONGTIME\" /* medium date long time */", "medium date long time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"MEDIUMDATEFULLTIME\" /* medium date full time */", "medium date full time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"LONGDATESHORTTIME\" /* long date short time */", "long date short time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"LONGDATEMEDIUMTIME\" /* long date medium time */", "long date medium time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"LONGDATELONGTIME\" /* long date long time */", "long date long time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"LONGDATEFULLTIME\" /* long date full time */", "long date full time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"FULLDATESHORTTIME\" /* full date short time */", "full date short time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"FULLDATEMEDIUMTIME\" /* full date medium time */", "full date medium time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"FULLDATELONGTIME\" /* full date long time */", "full date long time", null,
+ context));
+ acceptor.accept(
+ createCompletionProposal("\"FULLDATEFULLTIME\" /* full date full time */", "full date full time", null,
+ context));
+ }
+
+ // we use this override to inject a color picker in the proposal provider as well as predefined color values
+ override public void completeTableTextColor_Rgb(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ colorPickerProposal(model, assignment, context, acceptor)
+ }
+
+ override public void completeTableCellColor_Rgb(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ colorPickerProposal(model, assignment, context, acceptor)
+ }
+
+ def colorPickerProposal(EObject model, Assignment assignment, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+ var pickColor = createCompletionProposal(colorSelectionPrompt, context) as ConfigurableCompletionProposal
+ if (pickColor != null) {
+ var applier = new MyReplacementTextApplier()
+ applier.setContext(context)
+ pickColor.setTextApplier = applier
+ }
+ acceptor.accept(pickColor)
+
+ // predefined colors
+ acceptor.accept(createCompletionProposal("\"230,128,64\" /* orange */", "orange", null, context));
+ acceptor.accept(createCompletionProposal("\"255,182,182\" /* light red */", "light red", null, context));
+ acceptor.accept(createCompletionProposal("\"255,0,0\" /* red */", "red", null, context));
+ acceptor.accept(createCompletionProposal("\"204,102,102\" /* dark red */", "dark red", null, context));
+ acceptor.accept(createCompletionProposal("\"255,255,128\" /*light yellow */", "light yellow", null, context));
+ acceptor.accept(createCompletionProposal("\"255,255,0\" /* yellow */", "yellow", null, context));
+ acceptor.accept(createCompletionProposal("\"128,128,0\" /* dark yellow */", "dark yellow", null, context));
+ acceptor.accept(createCompletionProposal("\"102,204,102\" /* light green */", "light green", null, context));
+ acceptor.accept(createCompletionProposal("\"0,255,0\" /* green */", "green", null, context));
+ acceptor.accept(createCompletionProposal("\"147,183,95\" /* dark green */", "dark green", null, context));
+ acceptor.accept(createCompletionProposal("\"102,102,204\" /* light blue */", "light blue", null, context));
+ acceptor.accept(createCompletionProposal("\"0,0,255\" /* blue */", "blue", null, context));
+ acceptor.accept(createCompletionProposal("\"147,95,183\" /* dark blue */", "dark blue", null, context));
+ acceptor.accept(createCompletionProposal("\"0,0,0\" /* black */", "black", null, context));
+ acceptor.accept(createCompletionProposal("\"255,255,255\" /* white */", "white", null, context));
+ }
+
+ def isValueValidProposal(ContentAssistContext context, String proposal, boolean result) {
+ if (isGrammarToken(proposal)) {
+ return true
+ }
+ var eObj = context.currentModel
+ var requestedAxisName = ""
+ while (!(eObj instanceof TableDatamart)) {
+ eObj = eObj.eContainer
+ if (eObj instanceof TableAxis) {
+ requestedAxisName = (eObj as TableAxis).axis.literal
+ }
+ }
+ if (eObj != null) {
+ var datamart = (eObj as TableDatamart).datamartRef
+ if (datamart != null && datamart.source != null) {
+ if (datamart.source instanceof DatamartCube) {
+ for (axis : (datamart.source as DatamartCube).axisslicer) {
+ if (axis instanceof DatamartAxis) {
+ if ((axis as DatamartAxis).name.literal.equals(requestedAxisName)) {
+ var hasMeasures = false
+ var hasHierarchy = false
+ var hasAggregation = false
+ var isCrossjoined = false
+ var isUndefined = false
+ for (element : (axis as DatamartAxis).elements) {
+ if (element instanceof DatamartMeasure ||
+ element instanceof DatamartDerivedMeasure) {
+ hasMeasures = true
+ }
+ }
+ for (element : (axis as DatamartAxis).elements) {
+ if (element instanceof DatamartHierarchy) {
+ if (hasHierarchy) {
+ isCrossjoined = true
+ } else {
+ hasHierarchy = true
+ }
+
+ // if hierarchy returns undefined columns, then use ordinal
+ if ((element as DatamartHierarchy).allLevels) {
+ isUndefined = true
+ }
+ }
+ if (element instanceof DatamartSetAggregation) {
+ if (hasAggregation) {
+ isCrossjoined = true
+ } else {
+ hasAggregation = true
+ }
+ hasAggregation = true
+ }
+ }
+ if (hasMeasures && (hasHierarchy || hasAggregation)) {
+ isCrossjoined = true
+ }
+ if (isCrossjoined || isUndefined) {
+ if ("ordinal".equals(proposal)) {
+ return true
+ }
+ if ("allColumns".equals(proposal)) {
+ return true
+ }
+ if ("all".equals(proposal)) {
+ return true
+ }
+ }
+ if (!isUndefined) {
+ for (element : (axis as DatamartAxis).elements) {
+ if (element instanceof DatamartMeasure && "measure".equals(proposal)) {
+ return true;
+ }
+ if (element instanceof DatamartDerivedMeasure && "derived".equals(proposal)) {
+ return true;
+ }
+ if (element instanceof DatamartHierarchy /* && !hasMeasures*/ &&
+ "level".equals(proposal)) {
+ return true;
+ }
+ if (element instanceof DatamartSetAggregation /* && !hasMeasures*/ &&
+ "aggregation".equals(proposal)) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ } else if (datamart.source instanceof DatamartEntity && "property".equals(proposal)) {
+ return true
+ } else if (datamart.source instanceof DatamartTask &&
+ ("column".equals(proposal) || "taskId".equals(proposal))) {
+ return true
+ }
+ }
+ }
+ return false
+ }
+
+ def isGrammarToken(String proposal) {
+
+ if (imageSelectionPrompt.equals(proposal)) {
+ return true
+ }
+ if ("icon".equals(proposal)) {
+ return true
+ }
+ if ("image".equals(proposal)) {
+ return true
+ }
+ if ("using".equals(proposal)) {
+ return true
+ }
+ if ("preorder".equals(proposal)) {
+ return true
+ }
+ if ("intervals".equals(proposal)) {
+ return true
+ }
+ if ("lookups".equals(proposal)) {
+ return true
+ }
+ if ("formatter".equals(proposal)) {
+ return true
+ }
+ if ("hidelabel".equals(proposal)) {
+ return true
+ }
+ if ("collapse".equals(proposal)) {
+ return true
+ }
+ if ("up to".equals(proposal)) {
+ return true
+ }
+ if ("number".equals(proposal)) {
+ return true
+ }
+ if ("string".equals(proposal)) {
+ return true
+ }
+ if ("days in past".equals(proposal)) {
+ return true
+ }
+ if ("to".equals(proposal)) {
+ return true
+ }
+ if ("datamart".equals(proposal)) {
+ return true
+ }
+ if ("{".equals(proposal)) {
+ return true
+ }
+ if ("}".equals(proposal)) {
+ return true
+ }
+ return false
+ }
+
+ def isIntervalValidProposal(ContentAssistContext context, String proposal, boolean b) {
+ var node = context.currentNode?.parent?.semanticElement
+ var container = context.currentModel.eContainer
+ if (container instanceof TableValue) {
+ if (node instanceof TableRangeElement) {
+ if ("textcolor".equals(proposal) || "cellcolor".equals(proposal) || "icon".equals(proposal) ||
+ "trend".equals(proposal) || "tooltip".equals(proposal)) {
+ return true
+ }
+ } else {
+ return true
+ }
+ }
+ return false
+ }
+
+ def isAxisValidProposal(ContentAssistContext context, String proposal, boolean b) {
+ var eObj = context.currentModel
+ while (!(eObj instanceof Table)) {
+ eObj = eObj.eContainer
+ }
+ if ((eObj instanceof Table) && !((eObj as Table).tabletype instanceof TableTable) &&
+ "details".equals(proposal)) {
+ return false
+ }
+ return true
+ }
+
+ override public void complete_QualifiedName(EObject model, RuleCall ruleCall, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+ providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
+ }
+
+ override public void complete_TableQualifiedNameWithWildCard(EObject model, RuleCall ruleCall,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
+ }
+
+ override public void complete_SignedNumber(EObject model, RuleCall ruleCall, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+ providerHelper.createNumberProposal(context, acceptor, ruleCall, this);
+ }
+
+ override public void complete_Number(EObject model, RuleCall ruleCall, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+ providerHelper.createNumberProposal(context, acceptor, ruleCall, this);
+ }
+
+ // ----------------- Delegates to grid ------------------------
+ override void completePropertyButtonStyle_EventTopic(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completePropertyButtonStyle_EventTopic(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompletePropertyButtonStyle_EventTopic(acceptor, model, context)
+ }
+
+ override void completePropertyImageStyle_EventTopic(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completePropertyImageStyle_EventTopic(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompletePropertyImageStyle_EventTopic(acceptor, model, context)
+ }
+
+ override void completeStringToResourceStyleConfig_Value(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completeStringToResourceStyleConfig_Value(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompleteStringToResourceStyleConfig_Value(acceptor, model, context);
+ }
+
+ override void completeStringToResourceStyleConfig_ResourceThemePath(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completeStringToResourceStyleConfig_ResourceThemePath(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompleteStringToResourceStyleConfig_ResourceThemePath(acceptor, model, context);
+ }
+
+ override void completeNumericToResourceStyleConfig_ResourceThemePath(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completeNumericToResourceStyleConfig_ResourceThemePath(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompleteNumericToResourceStyleConfig_ResourceThemePath(acceptor, model, context);
+ }
+
+ override void completeNumericToResourceStyleConfig_Value(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completeNumericToResourceStyleConfig_Value(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompleteNumericToResourceStyleConfig_Value(acceptor, model, context);
+ }
+
+ override void completePropertyNumberStyle_NumberFormat(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completePropertyNumberStyle_NumberFormat(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompletePropertyNumberStyle_NumberFormat(acceptor, model, context);
+ }
+
+ override void completePropertyDateStyle_DateFormat(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completePropertyDateStyle_DateFormat(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompletePropertyDateStyle_DateFormat(acceptor, model, context)
+ }
+
+ override void completePropertyProgressbarStyle_MaxValue(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completePropertyProgressbarStyle_MaxValue(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompletePropertyProgressbarStyle_MaxValue(acceptor, model, context);
+ }
+
+ override completePropertyPriceStyle_HtmlPattern(EObject model, Assignment assignment, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+ super.completePropertyPriceStyle_HtmlPattern(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompletePropertyPriceStyle_HtmlPattern(acceptor, model, context);
+ }
+
+ override void completePropertyPriceStyle_ValueNumberFormat(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completePropertyPriceStyle_ValueNumberFormat(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompletePropertyPriceStyle_ValueNumberFormat(acceptor, model, context);
+ }
+
+ override completePropertyQuantityStyle_HtmlPattern(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completePropertyQuantityStyle_HtmlPattern(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompletePropertyQuantityStyle_HtmlPattern(acceptor, model, context);
+ }
+
+ override void completePropertyQuantityStyle_ValueNumberFormat(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ super.completePropertyQuantityStyle_ValueNumberFormat(model, assignment, context, acceptor)
+
+ gridProposalProvider.doCompletePropertyQuantityStyle_ValueNumberFormat(acceptor, model, context);
+ }
+
+ // ------------------------ delegates to TerminalsProposalProvider -----------------
+ override public void complete_TRANSLATABLESTRING(EObject model, RuleCall ruleCall, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+ provider.complete_STRING(model, ruleCall, context, acceptor)
+ }
+
+ override public void complete_ID(EObject model, RuleCall ruleCall, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+ provider.complete_ID(model, ruleCall, context, acceptor)
+ }
+
+ override public void completeTableImage_ResizeString(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ provider.complete_STRING(model, (assignment.getTerminal() as RuleCall), context, acceptor)
+ }
+
+ override public void completeTableStringLookup_LookupValue(EObject model, Assignment assignment,
+ ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ provider.complete_STRING(model, (assignment.getTerminal() as RuleCall), context, acceptor)
+ }
+
+}
diff --git a/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/labeling/TableDSLDescriptionLabelProvider.xtend b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/labeling/TableDSLDescriptionLabelProvider.xtend
new file mode 100644
index 0000000..bcd0a92
--- /dev/null
+++ b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/labeling/TableDSLDescriptionLabelProvider.xtend
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ *
+ * This copyright notice shows up in the generated Java code
+ *
+ */
+
+package org.eclipse.osbp.xtext.table.ui.labeling
+
+//import org.eclipse.xtext.resource.IEObjectDescription
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+class TableDSLDescriptionLabelProvider extends org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider {
+
+ // Labels and icons can be computed like this:
+
+// override text(IEObjectDescription ele) {
+// ele.name.toString
+// }
+//
+// override image(IEObjectDescription ele) {
+// ele.EClass.name + '.gif'
+// }
+}
diff --git a/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/labeling/TableDSLLabelProvider.xtend b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/labeling/TableDSLLabelProvider.xtend
new file mode 100644
index 0000000..9d03905
--- /dev/null
+++ b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/labeling/TableDSLLabelProvider.xtend
@@ -0,0 +1,156 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ *
+ * This copyright notice shows up in the generated Java code
+ *
+ */
+
+package org.eclipse.osbp.xtext.table.ui.labeling
+
+import com.google.inject.Inject
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider
+import org.eclipse.osbp.infogrid.model.gridsource.CxGridProperty
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropStyle
+import org.eclipse.osbp.xtext.basic.ui.labeling.BasicDSLLabelProvider
+import org.eclipse.osbp.xtext.table.Table
+import org.eclipse.osbp.xtext.table.TableAggregation
+import org.eclipse.osbp.xtext.table.TableAllColumns
+import org.eclipse.osbp.xtext.table.TableAxis
+import org.eclipse.osbp.xtext.table.TableBrokerDatamart
+import org.eclipse.osbp.xtext.table.TableCellColor
+import org.eclipse.osbp.xtext.table.TableColumn
+import org.eclipse.osbp.xtext.table.TableDatamart
+import org.eclipse.osbp.xtext.table.TableDateDayLookup
+import org.eclipse.osbp.xtext.table.TableDerived
+import org.eclipse.osbp.xtext.table.TableDtoDatasource
+import org.eclipse.osbp.xtext.table.TableEvent
+import org.eclipse.osbp.xtext.table.TableFormatter
+import org.eclipse.osbp.xtext.table.TableGrid
+import org.eclipse.osbp.xtext.table.TableHierarchy
+import org.eclipse.osbp.xtext.table.TableIcon
+import org.eclipse.osbp.xtext.table.TableInterval
+import org.eclipse.osbp.xtext.table.TableLookup
+import org.eclipse.osbp.xtext.table.TableMeasure
+import org.eclipse.osbp.xtext.table.TableModel
+import org.eclipse.osbp.xtext.table.TableNumberLookup
+import org.eclipse.osbp.xtext.table.TableOrdinal
+import org.eclipse.osbp.xtext.table.TablePackage
+import org.eclipse.osbp.xtext.table.TablePreorder
+import org.eclipse.osbp.xtext.table.TableProperty
+import org.eclipse.osbp.xtext.table.TableStringLookup
+import org.eclipse.osbp.xtext.table.TableTable
+import org.eclipse.osbp.xtext.table.TableTask
+import org.eclipse.osbp.xtext.table.TableTextColor
+import org.eclipse.osbp.xtext.table.TableTooltip
+import org.eclipse.osbp.xtext.table.TableTrend
+import org.eclipse.osbp.xtext.table.TableValue
+
+/**
+ * Provides labels for a EObjects.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+class TableDSLLabelProvider extends BasicDSLLabelProvider {
+
+ @Inject
+ new(AdapterFactoryLabelProvider delegate) {
+ super(delegate);
+ }
+ // Labels and icons can be computed like this:
+
+ override text ( Object o ) {
+ switch (o) {
+ TablePackage : generateText( o, 'package' , o.name )
+ Table : generateText( o, 'table model' , o.name )
+ TableTable : generateText( o, 'table' , o.source.datamartRef.name )
+ TableGrid : generateText( o, 'grid' , o.source.dtoSource.name )
+ TableAxis : generateText( o, 'axis' , o.axis.literal )
+ TableDatamart : generateText( o, 'datamart' , o.datamartRef.name )
+ TableBrokerDatamart : generateText( o, 'datamart' , o.datamartDef.name )
+ TableEvent : generateText( o, 'event' )
+ TableValue : generateText( o, 'value' )
+ TableInterval : generateText( o, 'interval' )
+ TableFormatter : generateText( o, 'formatter' , o.format )
+ TableTextColor : generateText( o, '''textcolor («o.rgb»)''' )
+ TableCellColor : generateText( o, '''cellcolor («o.rgb»)''' )
+ TableIcon : generateText( o, 'icon' , o.icon )
+ TableTooltip : generateText( o, 'tooltip' , o.tooltip )
+ TableTrend : generateText( o, 'trend' , o.icon.toString )
+
+ TableProperty : generateText( o, 'table property' , o.valueRef.propertyRef.name )
+ TableAggregation : generateText( o, 'aggregation' , o.valueRef.aggregation.toString )
+ TableHierarchy : generateText( o, 'level' , o.valueRef.name )
+ TableMeasure : generateText( o, 'measure' , o.valueRef.measureRef.name )
+ TableDerived : generateText( o, 'derived' , o.valueRef.derivedRef.name )
+ TableOrdinal : generateText( o, 'ordinal' , o.valueRef.toString )
+ TableColumn : generateText( o, 'column' , o.valueRef.columnRef.toString )
+ TableTask : generateText( o, 'task' )
+ TableAllColumns : generateText( o, 'all columns' )
+// TableValueElement : generateText( o, 'value element' )
+
+ TablePreorder : generateText( o, 'pre order' )
+// CxGridNestedField : generateText( o, 'nested field' )
+ CxGridProperty : generateText( o, 'grid property' )
+// TableGridProperty : generateText( o, 'grid property' )
+// CxGridNestedField : generateText( o, 'nested field' )
+// CxGridPropTextStyle : generateText( o, 'text style' )
+ CxGridPropStyle : generateText( o, 'property style' )
+// TableDtoDatasource : generateText( o, 'dto datasource' )
+ TableDtoDatasource : generateText( o, 'dto datasource' , o.dtoSource.name )
+// TableLookup : generateText( o, 'lookup' , o.toString )
+ TableStringLookup : generateText( o, 'string lookup' , o.lookupValue )
+ TableNumberLookup : generateText( o, 'number lookup' , o.lookupValue.toString )
+ TableDateDayLookup : generateText( o, 'date lookup' , o.lookupValue.toString )
+ default : super.text( o )
+ }
+ }
+
+ override image ( Object o ) {
+ switch (o) {
+ TableModel : getInternalImage( 'model.png' , class )
+ TablePackage : getInternalImage( 'package.gif' , class )
+ Table : getInternalImage( 'dsl_table.png' , class )
+ TableTable : getInternalImage( 'table-table.png' , class )
+ TableGrid : getInternalImage( 'table-grid.png' , class )
+ TableAxis : getInternalImage( 'axis.png' , class )
+ TableDatamart : getInternalImage( 'dsl_datamart.png' , class )
+ TableBrokerDatamart : getInternalImage( 'dsl_datamart.png' , class )
+ TableEvent : getInternalImage( 'event.png' , class )
+ TableValue : getInternalImage( 'value3.png' , class )
+ TableInterval : getInternalImage( 'interval.png' , class )
+ TableFormatter : getInternalImage( 'format.png' , class )
+ TableTextColor : getColorOutlineImage( o.rgb, true )
+ TableCellColor : getColorOutlineImage( o.rgb, true )
+ TableIcon : getInternalImage( 'img.png' , class )
+ TableTooltip : getInternalImage( 'tooltip.png' , class )
+ TableTrend : getInternalImage( 'trend.png' , class )
+ TableProperty : getInternalImage( 'properties.png' , class )
+ TableAggregation : getInternalImage( 'aggregate.png' , class )
+ TableAllColumns : getInternalImage( 'column.png' , class )
+ TableHierarchy : getInternalImage( 'level.png' , class )
+ TableMeasure : getInternalImage( 'measure.png' , class )
+ TableDerived : getInternalImage( 'derived.png' , class )
+ TableTask : getInternalImage( 'task.png' , class )
+ TableColumn : getInternalImage( 'column.png' , class )
+ TableLookup : getInternalImage( 'lookup.png' , class )
+ TablePreorder : getInternalImage( 'pre-order.png' , class )
+ CxGridProperty : getInternalImage( 'properties.png' , class )
+ CxGridPropStyle : getInternalImage( 'style.png' , class )
+ TableDtoDatasource : getInternalImage( 'datasource.png' , class )
+ default : super.image( o )
+
+// TableTrend has no own outline element - it is displayed within upper level element instead (e.g. interval)!
+// TableTrend : getInternalImage( 'trend_rising.png', class)
+ }
+ }
+}
diff --git a/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/outline/TableDSLOutlineTreeProvider.xtend b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/outline/TableDSLOutlineTreeProvider.xtend
new file mode 100644
index 0000000..4b375c8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/outline/TableDSLOutlineTreeProvider.xtend
@@ -0,0 +1,27 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ *
+ * This copyright notice shows up in the generated Java code
+ *
+ */
+
+package org.eclipse.osbp.xtext.table.ui.outline
+
+/**
+ * Customization of the default outline structure.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+class TableDSLOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+
+}
diff --git a/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/quickfix/TableDSLQuickfixProvider.xtend b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/quickfix/TableDSLQuickfixProvider.xtend
new file mode 100644
index 0000000..da82a41
--- /dev/null
+++ b/org.eclipse.osbp.xtext.table.ui/src/org/eclipse/osbp/xtext/table/ui/quickfix/TableDSLQuickfixProvider.xtend
@@ -0,0 +1,40 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ *
+ * This copyright notice shows up in the generated Java code
+ *
+ */
+
+package org.eclipse.osbp.xtext.table.ui.quickfix
+
+//import org.eclipse.xtext.ui.editor.quickfix.Fix
+//import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor
+//import org.eclipse.xtext.validation.Issue
+
+/**
+ * Custom quickfixes.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+class TableDSLQuickfixProvider extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider {
+
+// @Fix(MyDslValidator::INVALID_NAME)
+// def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) {
+// acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [
+// context |
+// val xtextDocument = context.xtextDocument
+// val firstLetter = xtextDocument.get(issue.offset, 1)
+// xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase)
+// ]
+// }
+}

Back to the top