[jboss-svn-commits] JBL Code SVN: r19858 - labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon May 5 08:52:58 EDT 2008
Author: KrisVerlaenen
Date: 2008-05-05 08:52:58 -0400 (Mon, 05 May 2008)
New Revision: 19858
Added:
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/GlobalCompletionProcessor.java
Modified:
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/RuleFlowGlobalsDialog.java
Log:
JBRULES-1405: Highlighting keywords and auto-completion
- code completion for global dialog
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/GlobalCompletionProcessor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/GlobalCompletionProcessor.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/GlobalCompletionProcessor.java 2008-05-05 12:52:58 UTC (rev 19858)
@@ -0,0 +1,116 @@
+package org.drools.eclipse.flow.ruleflow.view.property.constraint;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.editors.completion.CompletionUtil;
+import org.drools.eclipse.editors.completion.DefaultCompletionProcessor;
+import org.drools.eclipse.editors.completion.RuleCompletionProcessor;
+import org.drools.eclipse.editors.completion.RuleCompletionProposal;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Completion for ruleflow constraints.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class GlobalCompletionProcessor extends DefaultCompletionProcessor {
+
+ public GlobalCompletionProcessor() {
+ super(null);
+ }
+
+ public IEditorPart getEditor() {
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ if (workbench != null) {
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ if (workbenchWindow != null) {
+ IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
+ if (workbenchPage != null) {
+ return workbenchPage.getActiveEditor();
+ }
+ }
+ }
+ return null;
+ }
+
+ protected List getCompletionProposals(ITextViewer viewer,
+ int documentOffset) {
+ try {
+ IDocument doc = viewer.getDocument();
+ String backText = readBackwards(documentOffset, doc);
+ String prefix = CompletionUtil.stripLastWord(backText);
+ return getPossibleProposals(viewer, documentOffset, backText, prefix);
+ } catch (Throwable t) {
+ DroolsEclipsePlugin.log(t);
+ }
+ return null;
+ }
+
+
+ public List getImports() {
+ return Collections.EMPTY_LIST;
+ }
+
+ public List getGlobals() {
+ return Collections.EMPTY_LIST;
+ }
+
+ protected IJavaProject getCurrentJavaProject() {
+ IEditorPart editor = getEditor();
+ if (editor != null && editor.getEditorInput() instanceof IFileEditorInput) {
+ IFile file = ((IFileEditorInput) editor.getEditorInput()).getFile();
+ try {
+ if (file.getProject().getNature("org.eclipse.jdt.core.javanature") != null) {
+ return JavaCore.create(file.getProject());
+ }
+ } catch (CoreException e) {
+ // do nothing
+ }
+ }
+ return null;
+ }
+
+ protected List getPossibleProposals(ITextViewer viewer,
+ int documentOffset,
+ String backText,
+ final String prefix) {
+ List list = new ArrayList();
+ list.add(new RuleCompletionProposal(documentOffset - prefix.length(), prefix.length(), "global", "global "));
+ DefaultCompletionProcessor.filterProposalsOnPrefix(prefix, list);
+ return list;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/RuleFlowGlobalsDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/RuleFlowGlobalsDialog.java 2008-05-05 11:47:19 UTC (rev 19857)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/RuleFlowGlobalsDialog.java 2008-05-05 12:52:58 UTC (rev 19858)
@@ -22,15 +22,22 @@
import java.util.regex.Pattern;
import org.drools.eclipse.editors.DRLSourceViewerConfig;
+import org.drools.eclipse.editors.scanners.DRLPartionScanner;
import org.drools.workflow.core.WorkflowProcess;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IDocumentPartitioner;
+import org.eclipse.jface.text.contentassist.ContentAssistant;
+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContentAssistant;
import org.eclipse.jface.text.reconciler.IReconciler;
+import org.eclipse.jface.text.rules.FastPartitioner;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.SourceViewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -78,11 +85,31 @@
return null;
}
public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
- return null;
+ ContentAssistant assistant = new ContentAssistant();
+ IContentAssistProcessor completionProcessor = new GlobalCompletionProcessor();
+ assistant.setContentAssistProcessor(
+ completionProcessor, IDocument.DEFAULT_CONTENT_TYPE);
+ assistant.setProposalPopupOrientation(IContentAssistant.PROPOSAL_OVERLAY);
+ return assistant;
}
});
IDocument document = new Document(getProcessImports());
globalsViewer.setDocument(document);
+ IDocumentPartitioner partitioner =
+ new FastPartitioner(
+ new DRLPartionScanner(),
+ DRLPartionScanner.LEGAL_CONTENT_TYPES);
+ partitioner.connect(document);
+ document.setDocumentPartitioner(partitioner);
+ globalsViewer.getControl().addKeyListener(new KeyListener() {
+ public void keyPressed(KeyEvent e) {
+ if (e.character == ' ' && e.stateMask == SWT.CTRL) {
+ globalsViewer.doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
+ }
+ }
+ public void keyReleased(KeyEvent e) {
+ }
+ });
return globalsViewer.getControl();
}
More information about the jboss-svn-commits
mailing list