|
From: Christopher W. <caw...@us...> - 2006-02-18 17:29:39
|
Update of /cvsroot/rubyeclipse/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13371/src/org/rubypeople/rdt/internal/ui/preferences Modified Files: RubyTemplatePreferencePage.java Added Files: RubySourcePreviewUpdater.java Log Message: more template work. move RubyTextTools to externally visible package (match JDT) Index: RubyTemplatePreferencePage.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/preferences/RubyTemplatePreferencePage.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** RubyTemplatePreferencePage.java 18 Feb 2006 16:53:50 -0000 1.1 --- RubyTemplatePreferencePage.java 18 Feb 2006 17:29:33 -0000 1.2 *************** *** 12,31 **** package org.rubypeople.rdt.internal.ui.preferences; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.source.SourceViewer; - import org.eclipse.jface.text.source.SourceViewerConfiguration; import org.eclipse.jface.text.templates.Template; import org.eclipse.jface.text.templates.persistence.TemplatePersistenceData; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.texteditor.templates.TemplatePreferencePage; import org.rubypeople.rdt.internal.ui.RubyPlugin; import org.rubypeople.rdt.internal.ui.text.template.contentassist.RubyTemplateAccess; import org.rubypeople.rdt.ui.PreferenceConstants; ! import org.rubypeople.rdt.ui.text.RubySourceViewerConfiguration; /** --- 12,37 ---- package org.rubypeople.rdt.internal.ui.preferences; + import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.source.SourceViewer; import org.eclipse.jface.text.templates.Template; + import org.eclipse.jface.text.templates.TemplateContextType; import org.eclipse.jface.text.templates.persistence.TemplatePersistenceData; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; + import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; + import org.eclipse.swt.widgets.Control; import org.eclipse.ui.texteditor.templates.TemplatePreferencePage; import org.rubypeople.rdt.internal.ui.RubyPlugin; + import org.rubypeople.rdt.internal.ui.rubyeditor.RubySourceViewer; + import org.rubypeople.rdt.internal.ui.text.IRubyPartitions; + import org.rubypeople.rdt.internal.ui.text.SimpleRubySourceViewerConfiguration; import org.rubypeople.rdt.internal.ui.text.template.contentassist.RubyTemplateAccess; import org.rubypeople.rdt.ui.PreferenceConstants; ! import org.rubypeople.rdt.ui.text.RubyTextTools; /** *************** *** 56,73 **** * @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#createViewer(org.eclipse.swt.widgets.Composite) */ ! protected SourceViewer createViewer(Composite parent) { ! SourceViewer viewer = new SourceViewer(parent, null, null, false, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); ! ! // FIXME Pass in the current editor! ! SourceViewerConfiguration configuration = new RubySourceViewerConfiguration(RubyPlugin.getDefault().getRubyTextTools(), null); ! IDocument document = new Document(); ! // FIXME Do we need this? ! //new AntDocumentSetupParticipant().setup(document); viewer.configure(configuration); - viewer.setDocument(document); viewer.setEditable(false); ! Font font = JFaceResources.getFont(JFaceResources.TEXT_FONT); viewer.getTextWidget().setFont(font); ! return viewer; } --- 62,84 ---- * @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#createViewer(org.eclipse.swt.widgets.Composite) */ ! protected SourceViewer createViewer(Composite parent) { ! IDocument document= new Document(); ! RubyTextTools tools= RubyPlugin.getDefault().getRubyTextTools(); ! tools.setupRubyDocumentPartitioner(document, IRubyPartitions.RUBY_PARTITIONING); ! IPreferenceStore store= RubyPlugin.getDefault().getCombinedPreferenceStore(); ! SourceViewer viewer= new RubySourceViewer(parent, null, null, false, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL, store); ! SimpleRubySourceViewerConfiguration configuration= new SimpleRubySourceViewerConfiguration(tools.getColorManager(), store, null, IRubyPartitions.RUBY_PARTITIONING, false); viewer.configure(configuration); viewer.setEditable(false); ! viewer.setDocument(document); ! ! Font font= JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT); viewer.getTextWidget().setFont(font); ! new RubySourcePreviewerUpdater(viewer, configuration, store); ! ! Control control= viewer.getControl(); ! GridData data= new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL); ! control.setLayoutData(data); ! return viewer; } *************** *** 86,104 **** */ protected void updateViewerInput() { ! IStructuredSelection selection = (IStructuredSelection) getTableViewer().getSelection(); ! SourceViewer viewer = getViewer(); ! if (selection.size() == 1 && selection.getFirstElement() instanceof TemplatePersistenceData) { ! TemplatePersistenceData data = (TemplatePersistenceData) selection.getFirstElement(); ! Template template = data.getTemplate(); ! if (RubyPlugin.getDefault().getPreferenceStore().getBoolean(getFormatterPreferenceKey())) { ! String formatted = RubyPlugin.getDefault().getCodeFormatter().formatString(template.getPattern()); ! viewer.getDocument().set(formatted); ! } else { ! viewer.getDocument().set(template.getPattern()); ! } } else { viewer.getDocument().set(""); //$NON-NLS-1$ ! } } --- 97,123 ---- */ protected void updateViewerInput() { ! IStructuredSelection selection= (IStructuredSelection) getTableViewer().getSelection(); ! SourceViewer viewer= getViewer(); ! if (selection.size() == 1 && selection.getFirstElement() instanceof TemplatePersistenceData) { ! TemplatePersistenceData data= (TemplatePersistenceData) selection.getFirstElement(); ! Template template= data.getTemplate(); ! String contextId= template.getContextTypeId(); ! ! IDocument doc= viewer.getDocument(); ! ! String start= null; ! if ("rdoc".equals(contextId)) { //$NON-NLS-1$ ! start= "/**" + doc.getLegalLineDelimiters()[0]; //$NON-NLS-1$ ! } else ! start= ""; //$NON-NLS-1$ ! ! doc.set(start + template.getPattern()); ! int startLen= start.length(); ! viewer.setDocument(doc, startLen, doc.getLength() - startLen); ! } else { viewer.getDocument().set(""); //$NON-NLS-1$ ! } } --- NEW FILE: RubySourcePreviewUpdater.java --- /******************************************************************************* * Copyright (c) 2000, 2005 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.rubypeople.rdt.internal.ui.preferences; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.text.source.SourceViewer; import org.eclipse.jface.util.Assert; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.graphics.Font; import org.rubypeople.rdt.ui.PreferenceConstants; import org.rubypeople.rdt.ui.text.RubySourceViewerConfiguration; /** * Handles Ruby editor font changes for Ruby source preview viewers. * * @since 3.0 */ class RubySourcePreviewerUpdater { /** * Creates a Ruby source preview updater for the given viewer, configuration and preference store. * * @param viewer the viewer * @param configuration the configuration * @param preferenceStore the preference store */ RubySourcePreviewerUpdater(final SourceViewer viewer, final RubySourceViewerConfiguration configuration, final IPreferenceStore preferenceStore) { Assert.isNotNull(viewer); Assert.isNotNull(configuration); Assert.isNotNull(preferenceStore); final IPropertyChangeListener fontChangeListener= new IPropertyChangeListener() { /* * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) */ public void propertyChange(PropertyChangeEvent event) { if (event.getProperty().equals(PreferenceConstants.EDITOR_TEXT_FONT)) { Font font= JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT); viewer.getTextWidget().setFont(font); } } }; final IPropertyChangeListener propertyChangeListener= new IPropertyChangeListener() { /* * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) */ public void propertyChange(PropertyChangeEvent event) { if (configuration.affectsTextPresentation(event)) { configuration.handlePropertyChangeEvent(event); viewer.invalidateTextPresentation(); } } }; viewer.getTextWidget().addDisposeListener(new DisposeListener() { /* * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent) */ public void widgetDisposed(DisposeEvent e) { preferenceStore.removePropertyChangeListener(propertyChangeListener); JFaceResources.getFontRegistry().removeListener(fontChangeListener); } }); JFaceResources.getFontRegistry().addListener(fontChangeListener); preferenceStore.addPropertyChangeListener(propertyChangeListener); } } |