Hi all,

I could not withold this...

Bioclipse [1] has a Jmol plugin... it was one of the first... Bioclipse is a 
chemo/bio-informatics workbench based on the RichClientPlatform used by 
Eclipse.

Now, Ola has written a text editor for Jmol scripts... with syntax 
highlighting *and* code completion...

Hope we get to see a screenshot soon!

If you want to give it a go: it should be fairly easy to set up for those who 
already use Eclipse with the SVN plugin... Bioclipse uses the same 
environment. Since there is quite some overlap between Jmol/CDK/Bioclipse, 
developers who know about the Bioclipse SVN are often online at #cdk at 
irc.freenode.net.

Egon

1.http://www.bioclipse.net/

----------  Forwarded Message  ----------

Subject: [Bioclipse-commit] SF.net SVN: bioclipse: [304] trunk/bc_jmol
Date: Thursday 02 March 2006 16:18
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]

Revision: 304
Author:   ospjuth
Date:     2006-03-02 07:17:55 -0800 (Thu, 02 Mar 2006)
ViewCVS:  http://svn.sourceforge.net/bioclipse/?rev=304&view=rev

Log Message:
-----------
Added a script editor for Jmol with basic syntax highlighing and code
 completion

Modified Paths:
--------------
    trunk/bc_jmol/META-INF/MANIFEST.MF
    trunk/bc_jmol/plugin.xml

Added Paths:
-----------
    trunk/bc_jmol/src/net/bioclipse/editors/
    trunk/bc_jmol/src/net/bioclipse/editors/jmol/
    trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolCompletionProcessor.java
    trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolEditor.java
    trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolRuleScanner.java
    trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolSourceViewerConfig.java
Modified: trunk/bc_jmol/META-INF/MANIFEST.MF
===================================================================
--- trunk/bc_jmol/META-INF/MANIFEST.MF  2006-03-02 14:59:40 UTC (rev 303)
+++ trunk/bc_jmol/META-INF/MANIFEST.MF  2006-03-02 15:17:55 UTC (rev 304)
@@ -10,7 +10,9 @@
  net.bioclipse,
  net.bioclipse.plugins.bc_cdk,
  com.tools.logging,
- org.eclipse.ui.views
+ org.eclipse.ui.views,
+ org.eclipse.jface.text,
+ org.eclipse.ui.workbench.texteditor
 Eclipse-AutoStart: true
 Bundle-ClassPath: bc_jmol.jar,
  jars/,

Modified: trunk/bc_jmol/plugin.xml
===================================================================
--- trunk/bc_jmol/plugin.xml    2006-03-02 14:59:40 UTC (rev 303)
+++ trunk/bc_jmol/plugin.xml    2006-03-02 15:17:55 UTC (rev 304)
@@ -30,7 +30,20 @@
       </view>
    </extension>

+<extension
+        point="org.eclipse.ui.editors">
+       <editor
+                 id="net.bioclipse.editors.jmol.JmolEditor"
+                 name="JmolEditor"
+                 icon="icons/sample.gif"
+                 extensions="spt,scr"
+         
 contributorClass="org.eclipse.ui.texteditor.BasicTextEditorActionContributor
" +               class="net.bioclipse.editors.jmol.JmolEditor">
+       </editor>
+</extension>

+
+
    <extension
          point="org.eclipse.ui.actionSets">
       <actionSet

Added:
 trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolCompletionProcessor.java
 ===================================================================
---
 trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolCompletionProcessor.java      
  
                      (rev 0) +++
 trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolCompletionProcessor.java      
20
06-03-02 15:17:55 UTC (rev 304) @@ -0,0 +1,101 @@
+package net.bioclipse.editors.jmol;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.contentassist.CompletionProposal;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
+import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.jface.text.contentassist.IContextInformationValidator;
+
+public class JmolCompletionProcessor implements IContentAssistProcessor {
+
+       /* (non-Javadoc)
+        * Method declared on IContentAssistProcessor
+        */
+       public ICompletionProposal[] computeCompletionProposals(
+               ITextViewer viewer,
+               int documentOffset) {
+
+               try {
+
+                       int myOffset;
+                       if (documentOffset-10<0)
+                               myOffset=0;
+                       else
+                               myOffset=documentOffset-10;
+
+                       String startStr = viewer.getDocument().get(myOffset,10);
+//                     System.out.println("s: " + startStr);
+
+                       int myLastIndex;
+                       if (startStr.lastIndexOf(" ") < 
startStr.lastIndexOf("\n"))
+                               myLastIndex=startStr.lastIndexOf("\n");
+                       else
+                               myLastIndex=startStr.lastIndexOf(" ");
+
+                       String searchStr=startStr.substring(myLastIndex+1);
+
+                       System.out.println("To validate against: " + searchStr);
+
+                       //Look up all that starts with this startStr
+                       String[] lookedUp=JmolEditor.lookUpNames(searchStr);
+
+                       ICompletionProposal[] result =
+                               new ICompletionProposal[lookedUp.length];
+                       for (int i = 0; i < lookedUp.length; i++) {
+                               result[i] = new CompletionProposal(lookedUp[i],
+                                                               
documentOffset-searchStr.length(), searchStr.length(),
 lookedUp[i].length()); +                       }
+
+                       return result;
+
+
+               } catch (BadLocationException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+
+               return null;
+       }
+
+       /* (non-Javadoc)
+        * Method declared on IContentAssistProcessor
+        */
+       public char[] getCompletionProposalAutoActivationCharacters() {
+               return new char[] { '\n', ' ' };
+//             return null;
+       }
+
+       /* (non-Javadoc)
+        * Method declared on IContentAssistProcessor
+        */
+       public char[] getContextInformationAutoActivationCharacters() {
+               return null;
+       }
+
+       // For Context information
+       /* (non-Javadoc)
+        * Method declared on IContentAssistProcessor
+        */
+       public IContextInformationValidator getContextInformationValidator() {
+               return null;
+       }
+
+       /* (non-Javadoc)
+        * Method declared on IContentAssistProcessor
+        */
+       public IContextInformation[] computeContextInformation(
+               ITextViewer viewer,
+               int documentOffset) {
+
+               return null;
+       }
+
+       /* (non-Javadoc)
+        * Method declared on IContentAssistProcessor
+        */
+       public String getErrorMessage() {
+               return null;
+       }
+}

Added: trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolEditor.java
===================================================================
--- trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolEditor.java                
    
            (rev 0) +++
 trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolEditor.java   2006-03-02
 15:17:55 UTC (rev 304) @@ -0,0 +1,199 @@
+package net.bioclipse.editors.jmol;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+
+
+import net.bioclipse.editors.SimpleEditor;
+
+
+/**
+ * Add jmol syntax completion and coloring
+ */
+public class JmolEditor extends SimpleEditor {
+
+       protected final static String[] jmolProposals = {
+               "select",
+               "rotate",
+               "all",
+               "animation",
+               "anim",
+               "console",
+               "measure",
+               "monitor",
+               "select",
+               "ssbonds",
+               "atom",
+               "expressions",
+               "define",
+               "meshribbon",
+               "set",
+               "bond",
+               "styles",
+               "star",
+               "backbone",
+               "delay",
+               "model",
+               "set",
+               "stereo",
+               "background",
+               "depth",
+               "move",
+               "set",
+               "strands",
+               "bondorder",
+               "dots",
+               "moveto",
+               "set",
+               "lighting",
+               "perspective",
+               "trace",
+               "cartoon",
+               "cartoons",
+               "echo",
+               "pmesh",
+               "set",
+               "translate",
+               "center",
+               "centre",
+               "exit",
+               "polyhedra",
+               "set",
+               "chainCaseSensitive",
+               "vector",
+               "vectors",
+               "centerAt",
+               "font",
+               "quit",
+               "debugScript",
+               "vibration",
+               "color",
+               "colour",
+               "frame",
+               "refresh",
+               "measurement",
+               "wireframe",
+               "hbonds",
+               "reset",
+               "picking",
+               "zap",
+               "hover",
+               "restrict",
+               "spin",
+               "zoom",
+               "isosurface",
+               "ribbon",
+               "ribbons",
+               "show",
+               "label",
+               "labels",
+               "rocket ",
+               "rockets",
+               "slab",
+               "comment",
+               "load",
+               "rotate",
+               "spacefill",
+               "connect",
+               "loop",
+               "script ",
+               "source",
+               "spin"
+       };
+
+
+       protected static String[] subStrings;
+
+       protected static ArrayList startList;
+       protected static ArrayList fullList;
+
+
+       /**
+        * Constructor
+        *
+        */
+       public JmolEditor()
+       {
+               super();
+               computeSubStrings();
+               setSourceViewerConfiguration(new JmolSourceViewerConfig());
+       }
+
+
+       public static String[] getSubStrings() {
+               return subStrings;
+       }
+       public static String[] getJmolProposals() {
+               return jmolProposals;
+       }
+
+       /**
+        * Compute all substrings of the proposals
+        */
+       private void computeSubStrings() {
+
+               startList=new ArrayList();
+               fullList=new ArrayList();
+
+               //All words
+               for (int i=0;i<jmolProposals.length;i++){
+
+                       String name=jmolProposals[i];
+
+                       //This word
+                       for (int j=1;j<name.length();j++){
+                               String startAdd=name.substring(0,j);
+                               String endAdd=name.substring(j,name.length());
+                               startList.add(startAdd);
+                               fullList.add(name);
+
+                       }
+
+               }
+
+               System.out.println("==============");
+               subStrings=new String[startList.size()];
+               for (int i=0; i< fullList.size();i++){
+                       System.out.println(startList.get(i) + " - " + 
fullList.get(i));
+                       subStrings[i]=(String)startList.get(i);
+               }
+               System.out.println("==============");
+
+
+       }
+
+       @SuppressWarnings("unchecked")
+       public static String[] lookUpNames(String start){
+
+               //Temp list
+               ArrayList lst=new ArrayList();
+
+               //Look through all in startlist and add matching names to ret
+               for (int i=0; i< startList.size();i++){
+                       String thisStart = (String)startList.get(i);
+                       if (thisStart.startsWith(start)){
+                               if (!(lst.contains(fullList.get(i))))
+                                       lst.add(fullList.get(i));
+                       }
+               }
+
+               Collections.sort(lst);
+
+               //Convert list to array of strings
+               String[] ret=new String[lst.size()];
+               for (int i=0; i< lst.size();i++){
+                       ret[i]=(String)lst.get(i);
+               }
+
+               return ret;
+       }
+
+
+
+
+
+}
+

Added: trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolRuleScanner.java
===================================================================
--- trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolRuleScanner.java          
                 (rev 0) +++
 trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolRuleScanner.java      
2006-03-02
 15:17:55 UTC (rev 304) @@ -0,0 +1,33 @@
+package net.bioclipse.editors.jmol;
+
+import org.eclipse.jface.text.TextAttribute;
+import org.eclipse.jface.text.rules.EndOfLineRule;
+import org.eclipse.jface.text.rules.IRule;
+import org.eclipse.jface.text.rules.IToken;
+import org.eclipse.jface.text.rules.MultiLineRule;
+import org.eclipse.jface.text.rules.RuleBasedScanner;
+import org.eclipse.jface.text.rules.SingleLineRule;
+import org.eclipse.jface.text.rules.Token;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Display;
+
+public class JmolRuleScanner extends RuleBasedScanner {
+       private static Color TAG_COLOR= new Color(Display.getCurrent(), new
 RGB(200, 0, 0)); +     private static Color COMMENT_COLOR= new
 Color(Display.getCurrent(), new RGB(0, 200, 0)); +
+       public JmolRuleScanner() {
+               IToken tagToken =
+                       new Token(
+                               new TextAttribute(TAG_COLOR));
+
+               IToken commentToken= new Token(new 
TextAttribute(COMMENT_COLOR));
+
+               IRule[] rules = new IRule[2];
+               //Add rule for processing instructions
+
+               rules[0] = new SingleLineRule("selec", "elect", tagToken);
+               rules[1] = (new EndOfLineRule("#", commentToken)); //$NON-NLS-1$
+               setRules(rules);
+       }
+}

Added:
 trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolSourceViewerConfig.java
 ===================================================================
--- trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolSourceViewerConfig.java    
                        (rev 0) +++
 trunk/bc_jmol/src/net/bioclipse/editors/jmol/JmolSourceViewerConfig.java       
200
6-03-02 15:17:55 UTC (rev 304) @@ -0,0 +1,60 @@
+package net.bioclipse.editors.jmol;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.TextAttribute;
+import org.eclipse.jface.text.contentassist.ContentAssistant;
+import org.eclipse.jface.text.contentassist.IContentAssistant;
+import org.eclipse.jface.text.presentation.IPresentationReconciler;
+import org.eclipse.jface.text.presentation.PresentationReconciler;
+import org.eclipse.jface.text.rules.DefaultDamagerRepairer;
+import org.eclipse.jface.text.rules.Token;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.jface.text.source.SourceViewerConfiguration;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Display;
+
+public class JmolSourceViewerConfig extends SourceViewerConfiguration {
+       private JmolRuleScanner scanner;
+       private static Color DEFAULT_TAG_COLOR =
+               new Color(Display.getCurrent(), new RGB(0, 0, 200));
+
+       public JmolSourceViewerConfig() {
+
+       }
+
+       protected JmolRuleScanner getTagScanner() {
+               if (scanner == null) {
+                       scanner = new JmolRuleScanner();
+                       scanner.setDefaultReturnToken(
+                               new Token(new 
TextAttribute(DEFAULT_TAG_COLOR)));
+               }
+               return scanner;
+       }
+
+       /**
+        * Define reconciler for MyEditor
+        */
+       public IPresentationReconciler getPresentationReconciler(ISourceViewer
 sourceViewer) { +              PresentationReconciler reconciler = new
 PresentationReconciler(); +            DefaultDamagerRepairer dr = new
 DefaultDamagerRepairer(getTagScanner()); +             
reconciler.setDamager(dr,
 IDocument.DEFAULT_CONTENT_TYPE);
+               reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
+               return reconciler;
+       }
+
+       public IContentAssistant getContentAssistant(ISourceViewer 
sourceViewer) {
+
+               ContentAssistant assistant = new ContentAssistant();
+               assistant.setContentAssistProcessor(
+                       new JmolCompletionProcessor(),
+                       IDocument.DEFAULT_CONTENT_TYPE);
+
+               assistant.enableAutoActivation(true);
+               assistant.enableAutoInsert(true);
+               assistant.setAutoActivationDelay(500);
+               assistant.setProposalPopupOrientation(
+                       IContentAssistant.PROPOSAL_OVERLAY);
+               return assistant;
+       }
+}
\ No newline at end of file



This was sent by the SourceForge.net collaborative development platform, the
 world's largest Open Source development site.




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Bioclipse-commit mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/bioclipse-commit

-------------------------------------------------------

-- 
[EMAIL PROTECTED]
PhD student on Molecular Representation in Chemometrics
Radboud University Nijmegen
Blog: http://chem-bla-ics.blogspot.com/
http://www.cac.science.ru.nl/people/egonw/
GPG: 1024D/D6336BA6


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Jmol-developers mailing list
Jmol-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-developers

Reply via email to