Hi!

I'm trying to implement a merge view for RDT (the view that is shown to watch 
diffs, for example to synchronize with the repository or before applying a 
refactoring). I thought it shouldn't be too hard to da and would be nice to 
have, but I can't get it working. The font of the view changes but it isn't 
colored at all.. maybe I'm setting the SimpleRubySourceViewerConfiguration up 
wrong or miss something.

If someone wants to take a look at it, that would be very nice :) I've 
attached a patch with my changes, I haven't committed it to our repository 
yet, not if I can't get it working :)

Thanks!

Mirko
Index: org.rubypeople.rdt.ui/META-INF/MANIFEST.MF
===================================================================
--- org.rubypeople.rdt.ui/META-INF/MANIFEST.MF	(revision 906)
+++ org.rubypeople.rdt.ui/META-INF/MANIFEST.MF	(working copy)
@@ -51,5 +51,6 @@
  org.eclipse.ui.forms,
  org.rubypeople.rdt.launching,
  org.eclipse.search,
- org.jruby
+ org.jruby,
+ org.eclipse.compare
 Eclipse-LazyStart: true
Index: org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/merge/RubyMergeViewer.java
===================================================================
--- org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/merge/RubyMergeViewer.java	(revision 0)
+++ org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/merge/RubyMergeViewer.java	(revision 0)
@@ -0,0 +1,50 @@
+package org.rubypeople.rdt.internal.ui.merge;
+
+import org.eclipse.compare.CompareConfiguration;
+import org.eclipse.compare.contentmergeviewer.TextMergeViewer;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocumentPartitioner;
+import org.eclipse.jface.text.TextViewer;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.texteditor.ChainedPreferenceStore;
+import org.rubypeople.rdt.internal.ui.RubyPlugin;
+import org.rubypeople.rdt.internal.ui.text.IRubyPartitions;
+import org.rubypeople.rdt.internal.ui.text.SimpleRubySourceViewerConfiguration;
+import org.rubypeople.rdt.ui.text.RubyTextTools;
+
+public class RubyMergeViewer extends TextMergeViewer {
+
+	public RubyMergeViewer(Composite parent, CompareConfiguration configuration) {
+		super(parent, configuration);
+	}
+
+	@Override
+	protected IDocumentPartitioner getDocumentPartitioner() {
+		return RubyPlugin.getDefault().getRubyTextTools().createDocumentPartitioner();
+	}
+
+	@Override
+	protected void configureTextViewer(TextViewer textViewer) {
+
+		if (textViewer instanceof SourceViewer) {
+			
+			SourceViewer sourceViewer = ((SourceViewer) textViewer);
+			
+			RubyTextTools tools = RubyPlugin.getDefault().getRubyTextTools();
+			Document doc = new Document();
+			tools.setupRubyDocumentPartitioner(doc,	IRubyPartitions.RUBY_PARTITIONING);
+
+			IPreferenceStore[] chain = { RubyPlugin.getDefault().getCombinedPreferenceStore() };
+			ChainedPreferenceStore preferenceStore = new ChainedPreferenceStore(chain);
+
+			SimpleRubySourceViewerConfiguration viewerConfiguration = new SimpleRubySourceViewerConfiguration(tools
+					.getColorManager(), preferenceStore, null, IRubyPartitions.RUBY_PARTITIONING, true);
+			sourceViewer.configure(viewerConfiguration);
+			
+   		} else {
+			super.configureTextViewer(textViewer);
+		}
+	}
+}
Index: org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/merge/RubyMergeViewCreator.java
===================================================================
--- org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/merge/RubyMergeViewCreator.java	(revision 0)
+++ org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/merge/RubyMergeViewCreator.java	(revision 0)
@@ -0,0 +1,15 @@
+package org.rubypeople.rdt.internal.ui.merge;
+
+import org.eclipse.compare.CompareConfiguration;
+import org.eclipse.compare.IViewerCreator;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Composite;
+
+public class RubyMergeViewCreator implements IViewerCreator {
+
+	public Viewer createViewer(Composite parent, CompareConfiguration config) {
+		return new RubyMergeViewer(parent, config);
+	}
+
+}
+
Index: org.rubypeople.rdt.ui/plugin.xml
===================================================================
--- org.rubypeople.rdt.ui/plugin.xml	(revision 906)
+++ org.rubypeople.rdt.ui/plugin.xml	(working copy)
@@ -930,5 +930,15 @@
          </description>
       </fontDefinition>
    </extension>
-     
+   
+   <extension
+         point="org.eclipse.compare.contentMergeViewers">
+      <viewer
+            class="org.rubypeople.rdt.internal.ui.merge.RubyMergeViewCreator"
+            id="org.rubypeople.rdt.internal.ui.RubyMergeViewer"/>
+      <contentTypeBinding
+            contentMergeViewerId="org.rubypeople.rdt.internal.ui.RubyMergeViewer"
+            contentTypeId="org.rubypeople.rdt.core.rubySource"/>
+   </extension>
+    
 </plugin>

Attachment: pgpn8mseQ4Gte.pgp
Description: PGP signature

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Rubyeclipse-development mailing list
Rubyeclipse-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rubyeclipse-development

Reply via email to