Mercurial > projects > dwt-addons
changeset 162:1a5b8f8129df
...
line wrap: on
line diff
--- a/dwtx/core/runtime/ILog.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/core/runtime/ILog.d Mon Sep 08 00:51:37 2008 +0200 @@ -16,7 +16,7 @@ import dwtx.core.runtime.ILogListener; import dwtx.core.runtime.IStatus; -// import org.osgi.framework.Bundle; +import dwtx.org.osgi.framework.Bundle; /** * A log to which status events can be written. Logs appear on individual @@ -46,8 +46,7 @@ * @return the plug-in with which this log is associated * @since 3.0 */ -// public Bundle getBundle(); -// DWT FIXME: Bundle not yet included + public Bundle getBundle(); /** * Logs the given status. The status is distributed to the log listeners
--- a/dwtx/core/runtime/Platform.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/core/runtime/Platform.d Mon Sep 08 00:51:37 2008 +0200 @@ -14,6 +14,8 @@ import dwt.dwthelper.utils; +import dwtx.core.runtime.IPath; +import dwtx.core.runtime.ILog; // import java.io.IOException; // import java.lang.reflect.Method; // import java.net.URL; @@ -22,7 +24,7 @@ // import java.util.MissingResourceException; // import java.util.ResourceBundle; // -// import org.osgi.framework.Bundle; +import dwtx.org.osgi.framework.Bundle; // import org.osgi.service.packageadmin.PackageAdmin; // // import dwtx.core.internal.runtime.CompatibilityHelper; @@ -716,29 +718,31 @@ // public static IPath getLocation() throws IllegalStateException { // return InternalPlatform.getDefault().getLocation(); // } -// -// /** -// * Returns the location of the platform log file. This file may contain information -// * about errors that have previously occurred during this invocation of the Platform. -// * <p> -// * It is recommended not to keep this value, as the log location may vary when an instance -// * location is being set.</p> -// * <p> -// * Note: it is very important that users of this method do not leave the log -// * file open for extended periods of time. Doing so may prevent others -// * from writing to the log file, which could result in important error messages -// * being lost. It is strongly recommended that clients wanting to read the -// * log file for extended periods should copy the log file contents elsewhere, -// * and immediately close the original file.</p> -// * @return the path of the log file on disk. -// * -// * XXX consider making an ILogger interface that listeners can implements and it allows -// * us to implement Platform.getLogLocation() -// */ -// public static IPath getLogFileLocation() { -// return InternalPlatform.getDefault().getMetaArea().getLogLocation(); -// } -// + + /** + * Returns the location of the platform log file. This file may contain information + * about errors that have previously occurred during this invocation of the Platform. + * <p> + * It is recommended not to keep this value, as the log location may vary when an instance + * location is being set.</p> + * <p> + * Note: it is very important that users of this method do not leave the log + * file open for extended periods of time. Doing so may prevent others + * from writing to the log file, which could result in important error messages + * being lost. It is strongly recommended that clients wanting to read the + * log file for extended periods should copy the log file contents elsewhere, + * and immediately close the original file.</p> + * @return the path of the log file on disk. + * + * XXX consider making an ILogger interface that listeners can implements and it allows + * us to implement Platform.getLogLocation() + */ + public static IPath getLogFileLocation() { + implMissing(__FILE__,__LINE__); + return null; + //return InternalPlatform.getDefault().getMetaArea().getLogLocation(); + } + // /** // * Returns the plug-in runtime object for the identified plug-in // * or <code>null</code> if no such plug-in can be found. If @@ -1027,22 +1031,24 @@ // public static long getStateStamp() { // return InternalPlatform.getDefault().getStateTimeStamp(); // } -// -// /** -// * Returns the log for the given bundle. If no such log exists, one is created. -// * -// * @param bundle the bundle whose log is returned -// * @return the log for the given bundle -// * @since 3.0 -// * XXX change this into a LogMgr service that would keep track of the map. See if it can be a service factory. -// * It would contain all the methods that are here. -// * Relate to RuntimeLog if appropriate. -// * The system log listener needs to be optional: turned on or off. What about a system property? :-) -// */ -// public static ILog getLog(Bundle bundle) { -// return InternalPlatform.getDefault().getLog(bundle); -// } -// + + /** + * Returns the log for the given bundle. If no such log exists, one is created. + * + * @param bundle the bundle whose log is returned + * @return the log for the given bundle + * @since 3.0 + * XXX change this into a LogMgr service that would keep track of the map. See if it can be a service factory. + * It would contain all the methods that are here. + * Relate to RuntimeLog if appropriate. + * The system log listener needs to be optional: turned on or off. What about a system property? :-) + */ + public static ILog getLog(Bundle bundle) { + implMissing(__FILE__,__LINE__); + return null; + //return InternalPlatform.getDefault().getLog(bundle); + } + // /** // * Returns the given bundle's resource bundle for the current locale. // * <p> @@ -1395,26 +1401,28 @@ // return InternalPlatform.getDefault().getFragments(bundle); // } // -// /** -// * Returns the resolved bundle with the specified symbolic name that has the -// * highest version. If no resolved bundles are installed that have the -// * specified symbolic name then null is returned. -// * <p> -// * Clients are also able to acquire the {@link PackageAdmin} service and query -// * it for the bundle with the specified symbolic name. Clients can ask the -// * service for all bundles with that particular name and then determine the -// * one with the highest version. Note that clients may want to filter -// * the results based on the state of the bundles. -// * </p> -// * @param symbolicName the symbolic name of the bundle to be returned. -// * @return the bundle that has the specified symbolic name with the -// * highest version, or <tt>null</tt> if no bundle is found. -// * @since 3.0 -// */ -// public static Bundle getBundle(String symbolicName) { -// return InternalPlatform.getDefault().getBundle(symbolicName); -// } -// + /** + * Returns the resolved bundle with the specified symbolic name that has the + * highest version. If no resolved bundles are installed that have the + * specified symbolic name then null is returned. + * <p> + * Clients are also able to acquire the {@link PackageAdmin} service and query + * it for the bundle with the specified symbolic name. Clients can ask the + * service for all bundles with that particular name and then determine the + * one with the highest version. Note that clients may want to filter + * the results based on the state of the bundles. + * </p> + * @param symbolicName the symbolic name of the bundle to be returned. + * @return the bundle that has the specified symbolic name with the + * highest version, or <tt>null</tt> if no bundle is found. + * @since 3.0 + */ + public static Bundle getBundle(String symbolicName) { + implMissing(__FILE__, __LINE__ ); + return null; + //return InternalPlatform.getDefault().getBundle(symbolicName); + } + // /** // * Returns all bundles with the specified symbolic name. If no resolved bundles // * with the specified symbolic name can be found, <tt>null</tt> is returned.
--- a/dwtx/core/runtime/jobs/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>Package-level Javadoc</title> -</head> -<body> -Provides core support for scheduling and interacting with background activity. -<h2> -Package Specification</h2> -<p> -This package specifies API for scheduling background tasks, or jobs. Jobs can be -scheduled for immediate execution, or for execution after a specified delay. Once -scheduled, jobs can be queried, canceled, or suspended. Rules can be attached to -jobs to indicate when they can run, and whether they can run simultaneously with other -jobs. This package also includes a generic locking facility that includes support for -detecting and responding to deadlock. -<p> -@since 3.0 -<p> -</body> -</html>
--- a/dwtx/dwtxhelper/BufferedReader.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/dwtxhelper/BufferedReader.d Mon Sep 08 00:51:37 2008 +0200 @@ -2,7 +2,21 @@ import dwt.dwthelper.utils; -class BufferedReader { +class BufferedReader : Reader { + this(Reader reader){ + implMissing(__FILE__,__LINE__); + } + public override int read(char[] cbuf, int off, int len){ + implMissing(__FILE__,__LINE__); + return 0; + } + public override void close(){ + implMissing(__FILE__,__LINE__); + } + public String readLine() { + implMissing(__FILE__,__LINE__); + return null; + } }
--- a/dwtx/dwtxhelper/Collection.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/dwtxhelper/Collection.d Mon Sep 08 00:51:37 2008 +0200 @@ -119,6 +119,7 @@ public bool addAll(int index, Collection c); public void clear(); public bool contains(Object o); + public bool contains(String o); public bool containsAll(Collection c); public int opEquals(Object o); public Object get(int index); @@ -1115,6 +1116,9 @@ public abstract bool addAll(int index, Collection c); public abstract void clear(); public abstract bool contains(Object o); + public bool contains(String str){ + return contains(stringcast(str)); + } public abstract bool containsAll(Collection c); public abstract int opEquals(Object o); public abstract Object get(int index); @@ -1331,6 +1335,9 @@ implMissing( __FILE__, __LINE__ ); return false; } + public bool contains(String str){ + return contains(stringcast(str)); + } public bool containsAll(Collection c){ implMissing( __FILE__, __LINE__ ); return false; @@ -1741,6 +1748,9 @@ bool contains(Object elem){ return list.contains(elem); } + bool contains(String elem){ + return contains(stringcast(elem)); + } bool containsAll(Collection c){ foreach(o; c){ if( !list.contains(o)) return false; @@ -1771,6 +1781,12 @@ Object get(int index){ return list.get(index); } + Object getFirst(){ + return list.get(0); + } + Object getLast(){ + return list.get(list.size()-1); + } hash_t toHash(){ implMissing( __FILE__, __LINE__ ); return 0; @@ -1949,6 +1965,9 @@ } return false; } + bool contains(String o){ + return contains(stringcast(o)); + } bool containsAll(Collection c){ implMissing( __FILE__, __LINE__ ); return false; @@ -2100,7 +2119,7 @@ } class Arrays { - public static bool equals(Object[] a, Object[] b){ + public static bool equals(T)(T[] a, T[] b){ if( a.length !is b.length ){ return false; } @@ -2115,6 +2134,34 @@ } return true; } +/+ public static bool equals(Object[] a, Object[] b){ + if( a.length !is b.length ){ + return false; + } + for( int i = 0; i < a.length; i++ ){ + if( a[i] is null && b[i] is null ){ + continue; + } + if( a[i] !is null && b[i] !is null && a[i] == b[i] ){ + continue; + } + return false; + } + return true; + } ++/ + static void sort( T )( T[] a, Comparator c ){ + bool isLess( T o1, T o2 ){ + return c.compare( cast(Object)o1, cast(Object)o2 ) < 0; + } + tango.core.Array.sort( a, &isLess ); + } + static void sort( T : char[] )( T[] a, Comparator c ){ + bool isLess( T o1, T o2 ){ + return c.compare( stringcast(o1), stringcast(o2) ) < 0; + } + tango.core.Array.sort( a, &isLess ); + } static List asList(Object[] a) { if( a.length is 0 ) return Collections.EMPTY_LIST; ArrayList res = new ArrayList( a.length ); @@ -2123,6 +2170,9 @@ } return res; } + public static void fill( String str, char c ){ + str[] = c; + } } class Collections { @@ -2228,4 +2278,8 @@ } } - +class LinkedHashMap : HashMap { + static this(){ + implMissing( __FILE__, __LINE__ ); + } +} \ No newline at end of file
--- a/dwtx/dwtxhelper/Date.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/dwtxhelper/Date.d Mon Sep 08 00:51:37 2008 +0200 @@ -1,6 +1,12 @@ module dwtx.dwtxhelper.Date; +import dwt.dwthelper.utils; + class Date { + long getTime(){ + implMissing(__FILE__,__LINE__); + return 0; + } }
--- a/dwtx/dwtxhelper/PushbackReader.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/dwtxhelper/PushbackReader.d Mon Sep 08 00:51:37 2008 +0200 @@ -1,5 +1,11 @@ module dwtx.dwtxhelper.PushbackReader; -class PushbackReader{ +import dwt.dwthelper.utils; + +class PushbackReader : Reader { + this( Reader reader ){ + } + void unread( char c ){ + } }
--- a/dwtx/dwtxhelper/StringReader.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/dwtxhelper/StringReader.d Mon Sep 08 00:51:37 2008 +0200 @@ -1,5 +1,19 @@ module dwtx.dwtxhelper.StringReader; -class StringReader { +import dwt.dwthelper.utils; + +class StringReader : Reader { + String str; + this( String str ){ + implMissing(__FILE__,__LINE__); + this.str = str; + } + public override int read(char[] cbuf, int off, int len){ + cbuf[ off .. off+len ] = str[ 0 .. len ]; + str = str[ len .. $ ]; + return len; + } + public override void close(){ + } }
--- a/dwtx/dwtxhelper/StringTokenizer.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/dwtxhelper/StringTokenizer.d Mon Sep 08 00:51:37 2008 +0200 @@ -1,4 +1,48 @@ module dwtx.dwtxhelper.StringTokenizer; +import dwt.dwthelper.utils; + class StringTokenizer { + + this(String){ + implMissing(__FILE__,__LINE__); + } + + this(String,String){ + implMissing(__FILE__,__LINE__); + } + + this(String,String,bool){ + implMissing(__FILE__,__LINE__); + } + + bool hasMoreTokens(){ + implMissing(__FILE__,__LINE__); + return false; + } + + String nextToken(){ + implMissing(__FILE__,__LINE__); + return null; + } + + String nextToken(String delim){ + implMissing(__FILE__,__LINE__); + return null; + } + + bool hasMoreElements(){ + implMissing(__FILE__,__LINE__); + return false; + } + + Object nextElement(){ + implMissing(__FILE__,__LINE__); + return null; + } + + int countTokens(){ + implMissing(__FILE__,__LINE__); + return 0; + } }
--- a/dwtx/dwtxhelper/URL.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/dwtxhelper/URL.d Mon Sep 08 00:51:37 2008 +0200 @@ -1,5 +1,10 @@ module dwtx.dwtxhelper.URL; +import dwt.dwthelper.utils; + class URL { + this(String){ + implMissing(__FILE__,__LINE__); + } }
--- a/dwtx/dwtxhelper/mangoicu/UBreakIterator.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/dwtxhelper/mangoicu/UBreakIterator.d Mon Sep 08 00:51:37 2008 +0200 @@ -312,6 +312,7 @@ // this is returned by next(), previous() etc ... const uint Done = uint.max; + alias Done DONE; /*********************************************************************** @@ -454,7 +455,7 @@ return ubrk_next (handle); return ubrk_following (handle, offset); } - + alias next following; /*********************************************************************** Determine the text boundary preceding the current text
--- a/dwtx/dwtxhelper/regex.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/dwtxhelper/regex.d Mon Sep 08 00:51:37 2008 +0200 @@ -1,11 +1,76 @@ module dwtx.dwtxhelper.regex; +import dwt.dwthelper.utils; + class Matcher { + public Pattern pattern(){ + implMissing( __FILE__, __LINE__ ); + return null; + } + public String group(){ + implMissing( __FILE__, __LINE__ ); + return null; + } + public String group(int n){ + implMissing( __FILE__, __LINE__ ); + return null; + } + public String replaceFirst(String replacement) { + implMissing( __FILE__, __LINE__ ); + return null; + } + public int start(){ + implMissing( __FILE__, __LINE__ ); + return 0; + } + public int end(){ + implMissing( __FILE__, __LINE__ ); + return 0; + } + public bool find(){ + implMissing( __FILE__, __LINE__ ); + return false; + } + public bool find(int start){ + implMissing( __FILE__, __LINE__ ); + return false; + } } class Pattern { + public static const int MULTILINE; + public static const int CASE_INSENSITIVE ; + public static const int UNICODE_CASE ; + + public String pattern(){ + implMissing( __FILE__, __LINE__ ); + return null; + } + public int flags(){ + implMissing( __FILE__, __LINE__ ); + return 0; + } + public static Pattern compile(String regex){ + implMissing( __FILE__, __LINE__ ); + return null; + } + public static Pattern compile(String regex, int flags){ + implMissing( __FILE__, __LINE__ ); + return null; + } + public Matcher matcher(CharSequence input){ + implMissing( __FILE__, __LINE__ ); + return null; + } + public Matcher matcher(String input){ + implMissing( __FILE__, __LINE__ ); + return null; + } } -class PatternSyntaxException { +class PatternSyntaxException : IllegalArgumentException { + this(String desc, String regex, int index) { + super(desc); + } }
--- a/dwtx/jface/internal/text/InformationControlReplacer.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/InformationControlReplacer.d Mon Sep 08 00:51:37 2008 +0200 @@ -44,7 +44,7 @@ * @since 3.4 */ public class InformationControlReplacer : AbstractInformationControlManager { - + alias AbstractInformationControlManager.showInformationControl showInformationControl; /** * Minimal width in pixels. */
--- a/dwtx/jface/internal/text/StickyHoverManager.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/StickyHoverManager.d Mon Sep 08 00:51:37 2008 +0200 @@ -18,10 +18,8 @@ import dwtx.jface.internal.text.TableOwnerDrawSupport; // packageimport import dwtx.jface.internal.text.DelayedInputChangeListener; // packageimport - import dwt.dwthelper.utils; - - +import tango.text.convert.Format; import dwt.DWT; import dwt.events.ControlEvent; @@ -48,7 +46,6 @@ import dwtx.jface.text.TextViewer; import dwtx.jface.util.Geometry; - /** * Implements a sticky hover control, i.e. a control that replaces a hover * with an enriched and focusable control. @@ -230,7 +227,7 @@ * @see dwt.events.FocusListener#focusLost(dwt.events.FocusEvent) */ public void focusLost(FocusEvent e) { - if (DEBUG) System.out_.println("StickyHoverManager.Closer.focusLost(): " + e); //$NON-NLS-1$ + if (DEBUG) System.out_.println(Format("StickyHoverManager.Closer.focusLost(): {}", e)); //$NON-NLS-1$ Display d= fSubjectControl.getDisplay(); d.asyncExec(new class() Runnable { // Without the asyncExec, mouse clicks to the workbench window are swallowed. @@ -272,7 +269,7 @@ } } else if (event.type is DWT.FocusOut) { - if (DEBUG) System.out_.println("StickyHoverManager.Closer.handleEvent(): focusOut: " + event); //$NON-NLS-1$ + if (DEBUG) System.out_.println(Format("StickyHoverManager.Closer.handleEvent(): focusOut: {}", event)); //$NON-NLS-1$ IInformationControl iControl= getCurrentInformationControl2(); if (iControl !is null && ! iControl.isFocusControl()) hideInformationControl();
--- a/dwtx/jface/internal/text/TableOwnerDrawSupport.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/TableOwnerDrawSupport.d Mon Sep 08 00:51:37 2008 +0200 @@ -61,7 +61,7 @@ * @param ranges the styled ranges or <code>null</code> to remove them */ public static void storeStyleRanges(TableItem item, int column, StyleRange[] ranges) { - item.setData(STYLED_RANGES_KEY + column, ranges); + item.setData(STYLED_RANGES_KEY ~ Integer.toString(column), new ArrayWrapperObject(arraycast!(Object)(ranges))); } /** @@ -72,7 +72,7 @@ * @return the styled ranges */ private static StyleRange[] getStyledRanges(TableItem item, int column) { - return arraycast!(StyleRange)(item.getData(STYLED_RANGES_KEY + column)); + return arrayFromObject!(StyleRange)(item.getData(STYLED_RANGES_KEY ~ Integer.toString(column))); } private this(Table table) {
--- a/dwtx/jface/internal/text/html/BrowserInformationControl.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/html/BrowserInformationControl.d Mon Sep 08 00:51:37 2008 +0200 @@ -21,9 +21,30 @@ import dwtx.jface.internal.text.html.BrowserInformationControlInput; // packageimport import dwtx.jface.internal.text.html.HTMLMessages; // packageimport +import dwt.dwthelper.utils; + +import dwt.widgets.Shell; +import dwt.widgets.Composite; +import dwtx.jface.text.AbstractInformationControl; +import dwtx.jface.text.IInformationControlExtension2; +import dwtx.jface.text.IDelayedInputChangeProvider; +import dwtx.jface.text.IInputChangedListener; + +class BrowserInformationControl : AbstractInformationControl , IInformationControlExtension2, IDelayedInputChangeProvider { + public this(Shell parent, String symbolicFontName, bool resizable){} + public static bool isAvailable(Composite parent){} + public void setInformation(String content) {} + protected void createContent(Composite parent) { + } + public void setInput(Object input) {} + public void setDelayedInputChangeListener(IInputChangedListener inputChangeListener) {} + public bool hasContents() { + return false; + } +} + // FIXME needs Browser :/ /++ -import dwt.dwthelper.utils; import dwtx.dwtxhelper.StringReader; import dwtx.dwtxhelper.Collection;
--- a/dwtx/jface/internal/text/html/HTML2TextReader.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/html/HTML2TextReader.d Mon Sep 08 00:51:37 2008 +0200 @@ -24,6 +24,7 @@ import dwt.dwthelper.utils; import dwtx.dwtxhelper.PushbackReader; import dwtx.dwtxhelper.Collection; +static import tango.text.convert.Utf; import dwt.DWT; import dwt.custom.StyleRange; @@ -190,7 +191,7 @@ if ("li".equals(html)) //$NON-NLS-1$ // FIXME: this hard-coded prefix does not work for RTL languages, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=91682 - return LINE_DELIM + HTMLMessages.getString("HTML2TextReader.listItemPrefix"); //$NON-NLS-1$ + return LINE_DELIM ~ HTMLMessages.getString("HTML2TextReader.listItemPrefix"); //$NON-NLS-1$ if ("/b".equals(html)) { //$NON-NLS-1$ stopBold(); @@ -242,22 +243,22 @@ int ch; do { - ch= nextChar(); + ch= nextDChar(); while (ch !is -1 && ch !is '>') { - buf.append(Character.toLowerCase(cast(wchar) ch)); - ch= nextChar(); + buf.append(dcharToString(Character.toLowerCase(cast(dchar) ch))); + ch= nextDChar(); if (ch is '"'){ - buf.append(Character.toLowerCase(cast(wchar) ch)); - ch= nextChar(); + buf.append(dcharToString(Character.toLowerCase(cast(dchar) ch))); + ch= nextDChar(); while (ch !is -1 && ch !is '"'){ - buf.append(Character.toLowerCase(cast(wchar) ch)); - ch= nextChar(); + buf.append(dcharToString(Character.toLowerCase(cast(dchar) ch))); + ch= nextDChar(); } } if (ch is '<' && !isInComment(buf)) { - unread(ch); - return '<' + buf.toString(); + unreadDChar(ch); + return '<' ~ buf.toString(); } } @@ -268,19 +269,19 @@ break; } // unfinished comment - buf.append(cast(wchar) ch); + buf.append(dcharToString(cast(dchar) ch)); } while (true); return html2Text(buf.toString()); } private static bool isInComment(StringBuffer buf) { - return buf.length() >= 3 && "!--".equals(buf.substring(0, 3)); //$NON-NLS-1$ + return buf.length() >= 3 && "!--".equals(buf.slice().substring(0, 3)); //$NON-NLS-1$ } private static bool isCommentEnd(StringBuffer buf) { int tagLen= buf.length(); - return tagLen >= 5 && "--".equals(buf.substring(tagLen - 2)); //$NON-NLS-1$ + return tagLen >= 5 && "--".equals(buf.slice().substring(tagLen - 2)); //$NON-NLS-1$ } private String processPreformattedText(int c) { @@ -290,8 +291,13 @@ } - private void unread(int ch) { - (cast(PushbackReader) getReader()).unread(ch); + private void unreadDChar(dchar ch) { + char[4] buf; + dchar[1] ibuf; + ibuf[0] = ch; + foreach( char c; tango.text.convert.Utf.toString( ibuf[], buf[] )){ + (cast(PushbackReader) getReader()).unread(c); + } } protected String entity2Text(String symbol) { @@ -303,16 +309,16 @@ } else { ch= Integer.parseInt(symbol.substring(1), 10); } - return EMPTY_STRING + cast(wchar)ch; + return dcharToString( cast(dchar)ch); } catch (NumberFormatException e) { } } else { - String str= cast(String) fgEntityLookup.get(symbol); + String str= stringcast( fgEntityLookup.get(symbol)); if (str !is null) { return str; } } - return "&" + symbol; // not found //$NON-NLS-1$ + return "&" ~ symbol; // not found //$NON-NLS-1$ } /* @@ -320,18 +326,19 @@ */ private String processEntity() { StringBuffer buf= new StringBuffer(); - int ch= nextChar(); - while (Character.isLetterOrDigit(cast(wchar)ch) || ch is '#') { - buf.append(cast(wchar) ch); - ch= nextChar(); + int ch= nextDChar(); + while (Character.isLetterOrDigit(cast(dchar)ch) || ch is '#') { + buf.append(dcharToString(cast(dchar) ch)); + ch= nextDChar(); } if (ch is ';') return entity2Text(buf.toString()); - buf.insert(0, '&'); + buf.select(0, 0); + buf.prepend("&"); if (ch !is -1) - buf.append(cast(wchar) ch); + buf.append(dcharToString(cast(dchar) ch)); return buf.toString(); } }
--- a/dwtx/jface/internal/text/html/HTMLMessages.properties Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -############################################################################### -# Copyright (c) 2006 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 -############################################################################### - - -HTMLTextPresenter.ellipse= ... - -# The following property value must end with a space -HTML2TextReader.listItemPrefix=\t-\
--- a/dwtx/jface/internal/text/html/HTMLPrinter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/html/HTMLPrinter.d Mon Sep 08 00:51:37 2008 +0200 @@ -39,24 +39,33 @@ */ public class HTMLPrinter { - private static RGB BG_COLOR_RGB= new RGB(255, 255, 225); // RGB value of info bg color on WindowsXP - private static RGB FG_COLOR_RGB= new RGB(0, 0, 0); // RGB value of info fg color on WindowsXP - + private static RGB BG_COLOR_RGB_; + private static RGB FG_COLOR_RGB_; - static this() { - implMissing( __FILE__, __LINE__ ); // lazy init needed for Display - final Display display= Display.getDefault(); + private static RGB BG_COLOR_RGB(){ + COLOR_RGB_init(); + return BG_COLOR_RGB_; + } + private static RGB FG_COLOR_RGB(){ + COLOR_RGB_init(); + return FG_COLOR_RGB_; + } + + private static bool COLOR_RGB_init_complete = false; + private static void COLOR_RGB_init() { + if( COLOR_RGB_init_complete ){ + return; + } + COLOR_RGB_init_complete = true; + BG_COLOR_RGB_= new RGB(255, 255, 225); // RGB value of info bg color on WindowsXP + FG_COLOR_RGB_= new RGB(0, 0, 0); // RGB value of info fg color on WindowsXP + Display display= Display.getDefault(); if (display !is null && !display.isDisposed()) { try { - display.asyncExec(new class() Runnable { - /* - * @see java.lang.Runnable#run() - */ - public void run() { - BG_COLOR_RGB= display.getSystemColor(DWT.COLOR_INFO_BACKGROUND).getRGB(); - FG_COLOR_RGB= display.getSystemColor(DWT.COLOR_INFO_FOREGROUND).getRGB(); - } - }); + display.asyncExec( dgRunnable( (Display display_){ + BG_COLOR_RGB_= display_.getSystemColor(DWT.COLOR_INFO_BACKGROUND).getRGB(); + FG_COLOR_RGB_= display_.getSystemColor(DWT.COLOR_INFO_FOREGROUND).getRGB(); + }, display )); } catch (DWTError err) { // see: https://bugs.eclipse.org/bugs/show_bug.cgi?id=45294 if (err.code !is DWT.ERROR_DEVICE_DISPOSED) @@ -103,7 +112,7 @@ try { int n= rd.read(readBuffer); while (n > 0) { - buffer.append(readBuffer, 0, n); + buffer.append(readBuffer[ 0 .. n ]); n= rd.read(readBuffer); } return buffer.toString(); @@ -127,7 +136,8 @@ appendColors(pageProlog, fgRGB, bgRGB); - buffer.insert(position, pageProlog.toString()); + buffer.select(position,0); + buffer.replace(pageProlog.toString()); } private static void appendColors(StringBuffer pageProlog, RGB fgRGB, RGB bgRGB) { @@ -165,17 +175,20 @@ // Find insertion index // a) within existing body tag with trailing space - int index= buffer.indexOf("<body "); //$NON-NLS-1$ + int index= buffer.slice().indexOf("<body "); //$NON-NLS-1$ if (index !is -1) { - buffer.insert(index+5, styleBuf); + buffer.select(index+5, 0); + buffer.replace(styleBuf); return; } // b) within existing body tag without attributes - index= buffer.indexOf("<body>"); //$NON-NLS-1$ + index= buffer.slice().indexOf("<body>"); //$NON-NLS-1$ if (index !is -1) { - buffer.insert(index+5, ' '); - buffer.insert(index+6, styleBuf); + buffer.select(index+5, 0); + buffer.replace( " " ); + buffer.select(index+6, 0); + buffer.replace(styleBuf); return; } } @@ -206,7 +219,8 @@ StringBuffer pageProlog= new StringBuffer(60); pageProlog.append("<html>"); //$NON-NLS-1$ appendColors(pageProlog, FG_COLOR_RGB, BG_COLOR_RGB); - buffer.insert(position, pageProlog.toString()); + buffer.select(position, 0); + buffer.replace(pageProlog.toString()); } public static void insertPageProlog(StringBuffer buffer, int position, URL styleSheetURL) { @@ -214,7 +228,8 @@ pageProlog.append("<html>"); //$NON-NLS-1$ appendStyleSheetURL(pageProlog, styleSheetURL); appendColors(pageProlog, FG_COLOR_RGB, BG_COLOR_RGB); - buffer.insert(position, pageProlog.toString()); + buffer.select(position, 0); + buffer.replace(pageProlog.toString()); } public static void insertPageProlog(StringBuffer buffer, int position, String styleSheet) { @@ -290,13 +305,13 @@ bool italic= (fontData.getStyle() & DWT.ITALIC) !is 0; // See: https://bugs.eclipse.org/bugs/show_bug.cgi?id=155993 - String size= Integer.toString(fontData.getHeight()) + ("carbon".equals(DWT.getPlatform()) ? "px" : "pt"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + String size= Integer.toString(fontData.getHeight()) ~ ("carbon".equals(DWT.getPlatform()) ? "px" : "pt"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - String family= "'" + fontData.getName() + "',sans-serif"; //$NON-NLS-1$ //$NON-NLS-2$ - styles= styles.replaceFirst("(html\\s*\\{.*(?:\\s|;)font-size:\\s*)\\d+pt(\\;?.*\\})", "$1" + size + "$2"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - styles= styles.replaceFirst("(html\\s*\\{.*(?:\\s|;)font-weight:\\s*)\\w+(\\;?.*\\})", "$1" + (bold ? "bold" : "normal") + "$2"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ - styles= styles.replaceFirst("(html\\s*\\{.*(?:\\s|;)font-style:\\s*)\\w+(\\;?.*\\})", "$1" + (italic ? "italic" : "normal") + "$2"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ - styles= styles.replaceFirst("(html\\s*\\{.*(?:\\s|;)font-family:\\s*).+?(;.*\\})", "$1" + family + "$2"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + String family= "'" ~ fontData.getName() ~ "',sans-serif"; //$NON-NLS-1$ //$NON-NLS-2$ + styles= styles.replaceFirst("(html\\s*\\{.*(?:\\s|;)font-size:\\s*)\\d+pt(\\;?.*\\})", "$1" ~ size ~ "$2"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + styles= styles.replaceFirst("(html\\s*\\{.*(?:\\s|;)font-weight:\\s*)\\w+(\\;?.*\\})", "$1" ~ (bold ? "bold" : "normal") ~ "$2"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ + styles= styles.replaceFirst("(html\\s*\\{.*(?:\\s|;)font-style:\\s*)\\w+(\\;?.*\\})", "$1" ~ (italic ? "italic" : "normal") ~ "$2"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ + styles= styles.replaceFirst("(html\\s*\\{.*(?:\\s|;)font-family:\\s*).+?(;.*\\})", "$1" ~ family ~ "$2"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return styles; } }
--- a/dwtx/jface/internal/text/html/HTMLTextPresenter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/html/HTMLTextPresenter.d Mon Sep 08 00:51:37 2008 +0200 @@ -24,6 +24,7 @@ import dwt.dwthelper.utils; import dwtx.dwtxhelper.Collection; +import dwtx.dwtxhelper.StringReader; import dwt.custom.StyleRange; import dwt.graphics.Drawable; @@ -53,7 +54,7 @@ private bool fEnforceUpperLineLimit; public this(bool enforceUpperLineLimit) { - super(); +// super(); fEnforceUpperLineLimit= enforceUpperLineLimit; } @@ -105,9 +106,10 @@ int length= line.length(); int i= 0; - while (i < length && Character.isWhitespace(line.charAt(i))) ++i; + while (i < length && Character.isWhitespace(line.getRelativeCodePoint(i,0))) + i += line.getRelativeCodePointOffset(i,1); - return (i is length ? line : line.substring(0, i)) + " "; //$NON-NLS-1$ + return (i is length ? line : line.substring(0, i)) ~ " "; //$NON-NLS-1$ } /** @@ -133,7 +135,7 @@ try { StringBuffer buffer= new StringBuffer(); - int maxNumberOfLines= Math.round(maxHeight / gc.getFontMetrics().getHeight()); + int maxNumberOfLines= cast(int) Math.round(maxHeight / gc.getFontMetrics().getHeight()); fCounter= 0; LineBreakingReader reader= new LineBreakingReader(createReader(hoverInfo, presentation), gc, maxWidth); @@ -197,22 +199,24 @@ int length= buffer.length(); int end= length -1; - while (end >= 0 && Character.isWhitespace(buffer.charAt(end))) - -- end; - if (end is -1) + while (end >= 0 && Character.isWhitespace(buffer.slice().getRelativeCodePoint( end, -1 ))) + end += buffer.slice().getRelativeCodePointOffset( end, -1 ); + + if (end <= -1) return ""; //$NON-NLS-1$ - if (end < length -1) - buffer.delete_(end + 1, length); + if (end < buffer.slice().getAbsoluteCodePointOffset( length, -1 )) + buffer.truncate(buffer.slice().getAbsoluteCodePointOffset( end, 1)); else end= length; int start= 0; - while (start < end && Character.isWhitespace(buffer.charAt(start))) - ++ start; + while (start < end && Character.isWhitespace(buffer.slice().getRelativeCodePoint(start, 0))) + start += buffer.slice().getRelativeCodePointOffset( start, 1 ); - buffer.delete_(0, start); + buffer.select(0, start); + buffer.remove(); presentation.setResultWindow(new Region(start, buffer.length())); return buffer.toString(); }
--- a/dwtx/jface/internal/text/html/SingleCharReader.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/html/SingleCharReader.d Mon Sep 08 00:51:37 2008 +0200 @@ -47,7 +47,7 @@ return -1; return i - off; } - cbuf[i]= cast(wchar)ch; + cbuf[i]= cast(char)ch; } return len; } @@ -68,7 +68,7 @@ StringBuffer buf= new StringBuffer(); int ch; while ((ch= read()) !is -1) { - buf.append(cast(wchar)ch); + buf.append(cast(char)ch); } return buf.toString(); }
--- a/dwtx/jface/internal/text/html/SubstitutionTextReader.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/html/SubstitutionTextReader.d Mon Sep 08 00:51:37 2008 +0200 @@ -21,8 +21,8 @@ import dwtx.jface.internal.text.html.BrowserInformationControlInput; // packageimport import dwtx.jface.internal.text.html.HTMLMessages; // packageimport - import dwt.dwthelper.utils; +import tango.core.Exception; /** * Reads the text contents from a reader and computes for each character @@ -92,9 +92,9 @@ protected int nextChar() { fReadFromBuffer= (fBuffer.length() > 0); if (fReadFromBuffer) { - char ch= fBuffer.charAt(fIndex++); + char ch= fBuffer.slice().charAt(fIndex++); if (fIndex >= fBuffer.length()) { - fBuffer.setLength(0); + fBuffer.truncate(0); fIndex= 0; } return ch; @@ -104,10 +104,10 @@ if (ch is -1) { ch= fReader.read(); } - if (fSkipWhiteSpace && Character.isWhitespace(cast(wchar)ch)) { + if (fSkipWhiteSpace && Character.isWhitespace(cast(char)ch)) { do { ch= fReader.read(); - } while (Character.isWhitespace(cast(wchar)ch)); + } while (Character.isWhitespace(cast(char)ch)); if (ch !is -1) { fCharAfterWhiteSpace= ch; return ' '; @@ -118,6 +118,46 @@ return ch; } + /// DWT + protected int nextDChar() { + char[4] buf = void; + int ch1 = nextChar(); + if( ch1 is -1 ) return -1; + buf[0] = cast(char)ch1; + if(( ch1 & 0x80 ) is 0x00 ){ + return ch1; + } + else if(( ch1 & 0xE0 ) is 0xC0 ){ + int ch2 = nextChar(); + if( ch2 is -1 ) throw new UnicodeException(__FILE__,__LINE__); + buf[1] = cast(char)ch2; + } + else if(( ch1 & 0xF0 ) is 0xE0 ){ + int ch2 = nextChar(); + if( ch1 is -1 ) throw new UnicodeException(__FILE__,__LINE__); + buf[1] = cast(char)ch2; + int ch3 = nextChar(); + if( ch3 is -1 ) throw new UnicodeException(__FILE__,__LINE__); + buf[2] = cast(char)ch3; + } + else if(( ch1 & 0xF8 ) is 0xF0 ){ + int ch2 = nextChar(); + if( ch1 is -1 ) throw new UnicodeException(__FILE__,__LINE__); + buf[1] = cast(char)ch2; + int ch3 = nextChar(); + if( ch3 is -1 ) throw new UnicodeException(__FILE__,__LINE__); + buf[2] = cast(char)ch3; + int ch4 = nextChar(); + if( ch4 is -1 ) throw new UnicodeException(__FILE__,__LINE__); + buf[3] = cast(char)ch4; + } + else { + throw new UnicodeException(__FILE__,__LINE__); + } + uint ate; + return tango.text.convert.Utf.decode( buf, ate ); + } + /** * @see Reader#read() */ @@ -130,8 +170,10 @@ String s= computeSubstitution(c); if (s is null) break; - if (s.length() > 0) - fBuffer.insert(0, s); + if (s.length() > 0){ + fBuffer.select(0, 0); + fBuffer.replace(s); + } c= nextChar(); } @@ -161,7 +203,7 @@ fReader.reset(); fWasWhiteSpace= true; fCharAfterWhiteSpace= -1; - fBuffer.setLength(0); + fBuffer.truncate(0); fIndex= 0; }
--- a/dwtx/jface/internal/text/link/contentassist/AdditionalInfoController2.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/link/contentassist/AdditionalInfoController2.d Mon Sep 08 00:51:37 2008 +0200 @@ -116,7 +116,7 @@ super.install(control); - Assert.isTrue( cast(Table)control ); + Assert.isTrue( null !is cast(Table)control ); fProposalTable= cast(Table) control; fProposalTable.addSelectionListener(fSelectionListener); synchronized (fThreadAccess) {
--- a/dwtx/jface/internal/text/link/contentassist/CompletionProposalPopup2.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/link/contentassist/CompletionProposalPopup2.d Mon Sep 08 00:51:37 2008 +0200 @@ -90,7 +90,7 @@ /** The used additional info controller */ private AdditionalInfoController2 fAdditionalInfoController; /** The closing strategy for this completion proposal popup */ - private PopupCloser2 fPopupCloser= new PopupCloser2(); + private PopupCloser2 fPopupCloser; /** The popup shell */ private Shell fProposalShell; /** The proposal table */ @@ -100,7 +100,7 @@ /** The key listener to control navigation */ private KeyListener fKeyListener; /** List of document events used for filtering proposals */ - private List fDocumentEvents= new ArrayList(); + private List fDocumentEvents; /** Listener filling the document event queue */ private IDocumentListener fDocumentListener; /** Reentrance count for <code>filterProposals</code> */ @@ -168,6 +168,8 @@ * @since 2.0 */ public this(ContentAssistant2 contentAssistant, ITextViewer viewer, AdditionalInfoController2 infoController) { + fPopupCloser= new PopupCloser2(); + fDocumentEvents= new ArrayList(); fModificationEditingSupport_init(); fFocusEditingSupport_init(); @@ -521,7 +523,7 @@ fFilteredProposals= null; - fContentAssistant.possibleCompletionsClosed(); + fContentAssistant.possibleCompletionsClosed_package(); } /** @@ -579,7 +581,7 @@ if (fIsColoredLabelsSupportEnabled) TableOwnerDrawSupport.storeStyleRanges(item, 0, styleRanges); - item.setData(p); + item.setData(cast(Object)p); if (validate && validateProposal(document, p, endOffset, null)) { selectionIndex= i; @@ -623,7 +625,7 @@ * @return the height hint for <code>table</code> */ private int getTableHeightHint(Table table, int rows) { - if (table.getFont().equals(JFaceResources.getDefaultFont())) + if (table.getFont().opEquals(JFaceResources.getDefaultFont())) table.setFont(JFaceResources.getDialogFont()); int result= table.getItemHeight() * rows; if (table.getLinesVisible()) @@ -876,31 +878,29 @@ private void filterProposals() { ++ fInvocationCounter; Control control= fViewer.getTextWidget(); - control.getDisplay().asyncExec(new class() Runnable { - long fCounter= fInvocationCounter; - public void run() { + control.getDisplay().asyncExec(dgRunnable( (long fInvocationCounter_) { + long fCounter= fInvocationCounter_; - if (fCounter !is fInvocationCounter) return; + if (fCounter !is fInvocationCounter) return; - int offset= fViewer.getSelectedRange().x; - ICompletionProposal[] proposals= null; - try { - if (offset > -1) { - DocumentEvent event= TextUtilities.mergeProcessedDocumentEvents(fDocumentEvents); - proposals= computeFilteredProposals(offset, event); - } - } catch (BadLocationException x) { - } finally { - fDocumentEvents.clear(); + int offset= fViewer.getSelectedRange().x; + ICompletionProposal[] proposals= null; + try { + if (offset > -1) { + DocumentEvent event= TextUtilities.mergeProcessedDocumentEvents(fDocumentEvents); + proposals= computeFilteredProposals(offset, event); } - fFilterOffset= offset; + } catch (BadLocationException x) { + } finally { + fDocumentEvents.clear(); + } + fFilterOffset= offset; - if (proposals !is null && proposals.length > 0) - setProposals(proposals); - else - hide(); - } - }); + if (proposals !is null && proposals.length > 0) + setProposals(proposals); + else + hide(); + }, fInvocationCounter)); } /** @@ -937,13 +937,13 @@ ICompletionProposalExtension2 p= cast(ICompletionProposalExtension2) proposals[i]; if (p.validate(document, offset, event)) - filtered.add(p); + filtered.add(cast(Object)p); } else if (cast(ICompletionProposalExtension)proposals[i] ) { ICompletionProposalExtension p= cast(ICompletionProposalExtension) proposals[i]; if (p.isValidFor(document, offset)) - filtered.add(p); + filtered.add(cast(Object)p); } else { // restore original behavior @@ -953,9 +953,7 @@ } } - ICompletionProposal[] p= new ICompletionProposal[filtered.size()]; - filtered.toArray(p); - return p; + return arraycast!(ICompletionProposal)(filtered.toArray()); } /**
--- a/dwtx/jface/internal/text/link/contentassist/ContentAssistMessages.properties Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -############################################################################### -# 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 -############################################################################### - - -InfoPopup.info_delay_timer_name=AdditionalInfo Delay - -ContentAssistant.assist_delay_timer_name=AutoAssist Delay - -HTMLTextPresenter.ellipse= ... - -# The following property value must end with a space -HTML2TextReader.listItemPrefix=\t-\
--- a/dwtx/jface/internal/text/link/contentassist/ContentAssistant2.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/link/contentassist/ContentAssistant2.d Mon Sep 08 00:51:37 2008 +0200 @@ -1292,6 +1292,9 @@ if (fContextInfoPopup !is null) fContextInfoPopup.hide(); } + package void hide_package() { + hide(); + } /** * Callback to signal this content assistant that the presentation of the possible completions has been stopped. @@ -1299,7 +1302,9 @@ */ protected void possibleCompletionsClosed() { } - + package void possibleCompletionsClosed_package(){ + possibleCompletionsClosed(); + } /* * @see IContentAssist#showContextInformation */ @@ -1314,6 +1319,9 @@ */ protected void contextInformationClosed() { } + package void contextInformationClosed_package() { + contextInformationClosed(); + } /** * Requests that the specified context information to be shown.
--- a/dwtx/jface/internal/text/link/contentassist/ContextInformationPopup2.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/link/contentassist/ContextInformationPopup2.d Mon Sep 08 00:51:37 2008 +0200 @@ -88,7 +88,7 @@ private ITextViewer fViewer; private ContentAssistant2 fContentAssistant; - private PopupCloser2 fPopupCloser= new PopupCloser2(); + private PopupCloser2 fPopupCloser; private Shell fContextSelectorShell; private Table fContextSelectorTable; private IContextInformation[] fContextSelectorInput; @@ -98,7 +98,7 @@ private StyledText fContextInfoText; private TextPresentation fTextPresentation; - private Stack fContextFrameStack= new Stack(); + private Stack fContextFrameStack; /** @@ -108,6 +108,8 @@ * @param viewer the viewer on top of which the context information is shown */ public this(ContentAssistant2 contentAssistant, ITextViewer viewer) { + fPopupCloser= new PopupCloser2(); + fContextFrameStack= new Stack(); fContentAssistant= contentAssistant; fViewer= viewer; } @@ -319,7 +321,7 @@ } if (fContextInfoPopup is null) - fContentAssistant.contextInformationClosed(); + fContentAssistant.contextInformationClosed_package(); } /** @@ -438,7 +440,7 @@ } if (!Helper2.okToUse(fContextInfoPopup)) - fContentAssistant.contextInformationClosed(); + fContentAssistant.contextInformationClosed_package(); } /** @@ -627,21 +629,19 @@ * Otherwise, we'd validate the context information based on the * pre-key-stroke state. */ - fContextInfoPopup.getDisplay().asyncExec(new class() Runnable { + fContextInfoPopup.getDisplay().asyncExec(dgRunnable( (ContextFrame fFrame_) { - private ContextFrame fFrame= cast(ContextFrame) fContextFrameStack.peek(); + ContextFrame fFrame= fFrame_; - public void run() { - if (Helper2.okToUse(fContextInfoPopup) && fFrame is fContextFrameStack.peek()) { - int offset= fViewer.getSelectedRange().x; - if (fFrame.fValidator is null || !fFrame.fValidator.isContextInformationValid(offset)) { - hideContextInfoPopup(); - } else if (fFrame.fPresenter !is null && fFrame.fPresenter.updatePresentation(offset, fTextPresentation)) { - TextPresentation.applyTextPresentation(fTextPresentation, fContextInfoText); - resize(); - } + if (Helper2.okToUse(fContextInfoPopup) && fFrame is fContextFrameStack.peek()) { + int offset= fViewer.getSelectedRange().x; + if (fFrame.fValidator is null || !fFrame.fValidator.isContextInformationValid(offset)) { + hideContextInfoPopup(); + } else if (fFrame.fPresenter !is null && fFrame.fPresenter.updatePresentation(offset, fTextPresentation)) { + TextPresentation.applyTextPresentation(fTextPresentation, fContextInfoText); + resize(); } } - }); + }, cast(ContextFrame) fContextFrameStack.peek())); } }
--- a/dwtx/jface/internal/text/link/contentassist/LineBreakingReader.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/link/contentassist/LineBreakingReader.d Mon Sep 08 00:51:37 2008 +0200 @@ -57,7 +57,7 @@ fMaxWidth= maxLineWidth; fOffset= 0; fLine= null; - fLineBreakIterator= UBreakIterator.getLineInstance(); + fLineBreakIterator= UBreakIterator.openLineIterator( ULocale.Default); fBreakWords= true; }
--- a/dwtx/jface/internal/text/link/contentassist/PopupCloser2.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/link/contentassist/PopupCloser2.d Mon Sep 08 00:51:37 2008 +0200 @@ -132,7 +132,7 @@ */ public void shellDeactivated(ShellEvent e) { if (fContentAssistant !is null) - fContentAssistant.hide(); + fContentAssistant.hide_package(); } @@ -142,6 +142,6 @@ */ public void shellClosed(ShellEvent e) { if (fContentAssistant !is null) - fContentAssistant.hide(); + fContentAssistant.hide_package(); } }
--- a/dwtx/jface/internal/text/link/contentassist/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> - <meta content="IBM" name="Author" name="GENERATOR"> - <title>Linked Position Infrastructure - Internal Copy of Content Assistant</title> -</head> -<body> -This package is a modified copy of <code>org.eclipse.jface.text.contentassist</code> that supports the linked mode proposals. -This package is internal and may disappear if the changes are merged with the API content assist package. Subject to change without notice. -</body> -</html>
--- a/dwtx/jface/internal/text/revisions/ChangeRegion.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/revisions/ChangeRegion.d Mon Sep 08 00:51:37 2008 +0200 @@ -20,12 +20,9 @@ import dwtx.jface.internal.text.revisions.RevisionPainter; // packageimport import dwtx.jface.internal.text.revisions.RevisionSelectionProvider; // packageimport - import dwt.dwthelper.utils; - import dwtx.dwtxhelper.Collection; - - +import tango.text.convert.Format; import dwtx.core.runtime.Assert; import dwtx.jface.text.revisions.Revision; @@ -36,32 +33,33 @@ * A change region describes a contiguous range of lines that was changed in the same revision of a * document. Once it is adjusted to diff information, the originally contiguous range may be split * into several ranges or even be empty. - * + * * @since 3.2 */ public final class ChangeRegion { private const Revision fRevision; private const ILineRange fLines; - private const List fAdjusted= new LinkedList(); - + private const List fAdjusted; + /** * Creates a new change region for the given revision and line range. - * + * * @param revision the revision of the new region * @param lines the line range of the new region * @throws IndexOutOfBoundsException if the line range is not well-formed */ public this(Revision revision, ILineRange lines) { + fAdjusted= new LinkedList(); Assert.isLegal(revision !is null); Assert.isLegal(lines !is null); fLines= Range.copy(lines); fRevision=revision; clearDiff(); } - + /** * Returns the revision that this region belongs to. - * + * * @return the revision that this region belongs to */ public Revision getRevision() { @@ -70,7 +68,7 @@ /** * Returns the original (before applying diff information) line range of this change region. - * + * * @return the original (before applying diff information) line range of this change region */ public ILineRange getOriginalRange() { @@ -80,28 +78,28 @@ /** * Returns the list of {@link ILineRange}s of this change region for which the revision * information is still valid. - * + * * @return the list of adjusted line ranges */ public List getAdjustedRanges() { return fAdjusted; } - + /** * Returns the line coverage of the adjusted ranges, an empty range if the coverage is empty. - * + * * @return the line coverage of the adjusted ranges */ public ILineRange getAdjustedCoverage() { if (fAdjusted.isEmpty()) return new LineRange(fLines.getStartLine(), 0); - + Range first= cast(Range) fAdjusted.get(0); Range last= cast(Range) fAdjusted.get(fAdjusted.size() - 1); - + return Range.createAbsolute(first.start(), last.end()); } - + /** * Clears any adjusted ranges, restoring the original range. */ @@ -109,16 +107,16 @@ fAdjusted.clear(); fAdjusted.add(Range.copy(fLines)); } - + /** * Adjusts this change region to a diff hunk. This will change the adjusted ranges. - * + * * @param hunk the diff hunk to adjust to */ public void adjustTo(Hunk hunk) { for (ListIterator it= fAdjusted.listIterator(); it.hasNext();) { Range range= cast(Range) it.next(); - + // do we need a split? int unchanged= getUnchanged(hunk, range.start()); if (unchanged > 0) { @@ -128,40 +126,40 @@ it.add(range); it.previous(); it.next(); // needed so we can remove below } - + int line= range.start(); Assert.isTrue(hunk.line <= line); - + // by how much do we shrink? int overlap= getOverlap(hunk, line); if (overlap >= range.length()) { it.remove(); continue; } - + // by how much do we move? range.moveBy(hunk.delta + overlap); range.resizeBy(-overlap); } - + } - + private int getUnchanged(Hunk hunk, int line) { return Math.max(0, hunk.line - line); } /* - * Returns the number of lines after line that the hunk reports as changed. + * Returns the number of lines after line that the hunk reports as changed. */ private int getOverlap(Hunk hunk, int line) { - + int deltaLine= hunk.line + hunk.changed; if (hunk.delta >= 0) { if (deltaLine <= line) return 0; return deltaLine - line; } - + // hunk.delta < 0 int hunkEnd= deltaLine - hunk.delta; int cutCount= hunkEnd - line; @@ -172,6 +170,6 @@ * @see java.lang.Object#toString() */ public override String toString() { - return "ChangeRegion [" + fRevision.toString() + ", [" + fLines.getStartLine() + "+" + fLines.getNumberOfLines() + ")]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ + return Format("ChangeRegion [{},[{}+{})]", fRevision.toString(), fLines.getStartLine(), fLines.getNumberOfLines() ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } }
--- a/dwtx/jface/internal/text/revisions/Colors.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/revisions/Colors.d Mon Sep 08 00:51:37 2008 +0200 @@ -62,9 +62,9 @@ * @return a normalized version of <code>color</code> * @see #brightness(RGB) */ - public static RGB adjustBrightness(RGB color, float brightness) { + public static RGB adjustBrightness(RGB color, float brightness_) { float[] hsi= toHSI(color); - float psychoFactor= brightness - brightness(color); + float psychoFactor= brightness_ - brightness(color); float weight= 0.5f; // found by trial and error hsi[2]= Math.max(0, Math.min(1.0f, hsi[2] + psychoFactor * weight)); color= fromHSI(hsi);
--- a/dwtx/jface/internal/text/revisions/Hunk.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/revisions/Hunk.d Mon Sep 08 00:51:37 2008 +0200 @@ -20,15 +20,15 @@ import dwtx.jface.internal.text.revisions.RevisionPainter; // packageimport import dwtx.jface.internal.text.revisions.RevisionSelectionProvider; // packageimport - import dwt.dwthelper.utils; +import tango.text.convert.Format; import dwtx.core.runtime.Assert; /** * A hunk describes a contiguous range of changed, added or deleted lines. <code>Hunk</code>s are separated by * one or more unchanged lines. - * + * * @since 3.3 */ public final class Hunk { @@ -48,7 +48,7 @@ /** * Creates a new hunk. - * + * * @param line the line at which the hunk starts, must be >= 0 * @param delta the difference in lines compared to the original * @param changed the number of changed lines in this hunk, must be >= 0 @@ -65,9 +65,9 @@ * @see java.lang.Object#toString() */ public override String toString() { - return "Hunk [" + line + ">" + changed + (delta < 0 ? "-" : "+") + Math.abs(delta) + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ + return Format("Hunk [{}>{}{}{}]", line, changed, delta < 0 ? "-" : "+", Math.abs(delta) ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ } - + /* * @see java.lang.Object#hashCode() */ @@ -83,11 +83,10 @@ /* * @see java.lang.Object#equals(java.lang.Object) */ - public bool equals(Object obj) { + public override int opEquals(Object obj) { if (obj is this) return true; - if ( cast(Hunk)obj ) { - Hunk other= cast(Hunk) obj; + if ( Hunk other= cast(Hunk)obj ) { return other.line is this.line && other.delta is this.delta && other.changed is this.changed; } return false;
--- a/dwtx/jface/internal/text/revisions/LineIndexOutOfBoundsException.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/revisions/LineIndexOutOfBoundsException.d Mon Sep 08 00:51:37 2008 +0200 @@ -27,7 +27,7 @@ * Thrown to indicate that an attempt to create or modify a {@link Range} failed because it would * have resulted in an illegal range. A range is illegal if its length is <= 0 or if its start * line is < 0. - * + * * @since 3.2 */ public final class LineIndexOutOfBoundsException : IndexOutOfBoundsException { @@ -42,20 +42,20 @@ /** * Constructs an <code>LineIndexOutOfBoundsException</code> with the specified detail message. - * + * * @param s the detail message. */ public this(String s) { super(s); } - + /** - * Constructs a new <code>LineIndexOutOfBoundsException</code> - * object with an argument indicating the illegal index. + * Constructs a new <code>LineIndexOutOfBoundsException</code> + * object with an argument indicating the illegal index. * * @param index the illegal index. */ public this(int index) { - super("Line index out of range: " + index); //$NON-NLS-1$ + super("Line index out of range: " ~ Integer.toString(index)); //$NON-NLS-1$ } }
--- a/dwtx/jface/internal/text/revisions/Range.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/revisions/Range.d Mon Sep 08 00:51:37 2008 +0200 @@ -20,8 +20,8 @@ import dwtx.jface.internal.text.revisions.RevisionPainter; // packageimport import dwtx.jface.internal.text.revisions.RevisionSelectionProvider; // packageimport - import dwt.dwthelper.utils; +import tango.text.convert.Format; import dwtx.jface.text.source.ILineRange; @@ -36,13 +36,13 @@ * result in a {@link LineIndexOutOfBoundsException} being * thrown. * </p> - * + * * @since 3.2 */ public final class Range : ILineRange, Cloneable { /** * Creates a new range with the same start and length as the passed line range. - * + * * @param range the range to copy * @return a <code>Range</code> with the same start and length as <code>range</code> * @throws LineIndexOutOfBoundsException if the passed {@link ILineRange} does not adhere to the @@ -51,20 +51,20 @@ public static Range copy(ILineRange range) { return createRelative(range.getStartLine(), range.getNumberOfLines()); } - + /** * Creates a new range equal to the passed line range. - * + * * @param range the range to copy * @return a <code>Range</code> equal to <code>range</code> */ public static Range copy(Range range) { return createRelative(range.start(), range.length()); } - + /** * Creates a new range with the given start offset and length. - * + * * @param start the first line of the new range, must be >= 0 * @param length the number of lines included in the new range, must be > 0 * @return a <code>Range</code> with the given start and length @@ -77,7 +77,7 @@ /** * Creates a new range with the given start and end offsets. - * + * * @param start the first line of the new range, must be >= 0 * @param end the first line not in the range any more (exclusive), must be > <code>start</code> * @return a <code>Range</code> with the given start and end offsets @@ -98,7 +98,7 @@ moveTo(start); setLength(length); } - + /* * @see dwtx.jface.text.source.ILineRange#getStartLine() */ @@ -112,154 +112,154 @@ public int getNumberOfLines() { return length(); } - + /** * Returns the first line contained in this range. Short equivalent of {@link #getStartLine()}. - * + * * @return the first line contained in this range */ public int start() { return fStart; } - + /** * Returns the number of lines contained in this range. Short equivalent of {@link #getNumberOfLines()}. - * + * * @return the number of lines contained in this range */ public int length() { return fLength; } - + /** * Returns the first line after this range. Equivalent to {@linkplain #start() start} + {@linkplain #length() length}. - * + * * @return the first line after this range */ public int end() { return start() + length(); } - + /** * Moves the receiver to <code>start</code>, keeping {@link #length()} constant. - * + * * @param start the new start, must be >= 0 * @throws LineIndexOutOfBoundsException if <code>start</code> < 0 */ public void moveTo(int start) { if (!(start >= 0)) - throw new LineIndexOutOfBoundsException("Cannot set a negative start: " + start); //$NON-NLS-1$ + throw new LineIndexOutOfBoundsException(Format("Cannot set a negative start: {}", start)); //$NON-NLS-1$ fStart= start; } - + /** * Moves this range such that the {@link #end()} is at <code>end</code>, keeping * {@link #length()} constant. - * + * * @param end the new end * @throws LineIndexOutOfBoundsException if <code>end</code> <= {@link #start()} */ public void moveEndTo(int end) { moveTo(end - length()); } - + /** * Moves the range by <code>delta</code> lines, keeping {@link #length()} constant. The * resulting start line must be >= 0. - * + * * @param delta the number of lines to shift the range * @throws LineIndexOutOfBoundsException if <code>-delta</code> > {@link #start()} */ public void moveBy(int delta) { moveTo(start() + delta); } - + /** * Moves the start offset to <code>start</code>, keeping {@link #end()} constant. - * + * * @param start the new start, must be >= 0 and < {@link #end()} * @throws LineIndexOutOfBoundsException if <code>start</code> < 0 or >= {@link #end()} */ public void setStart(int start) { int end= end(); if (!(start >= 0 && start < end)) - throw new LineIndexOutOfBoundsException("Cannot set a negative start: " + start); //$NON-NLS-1$ + throw new LineIndexOutOfBoundsException(Format("Cannot set a negative start: {}", start)); //$NON-NLS-1$ moveTo(start); setEnd(end); } - + /** * Sets the end of this range, keeping {@link #start()} constant. - * + * * @param end the new end, must be > {@link #start()} * @throws LineIndexOutOfBoundsException if <code>end</code> <= {@link #start()} */ public void setEnd(int end) { setLength(end - start()); } - + /** * Sets the length of this range, keeping {@link #start()} constant. - * + * * @param length the new length, must be > 0 * @throws LineIndexOutOfBoundsException if <code>length</code> <= 0 */ public void setLength(int length) { if (!(length > 0)) - throw new LineIndexOutOfBoundsException("Cannot set length <= 0: " + length); //$NON-NLS-1$ + throw new LineIndexOutOfBoundsException(Format("Cannot set length <= 0: {}", length)); //$NON-NLS-1$ fLength= length; } - + /** * Sets the length of this range, keeping {@link #end()} constant. - * + * * @param length the new length, must be > 0 and <= {@link #end()} * @throws LineIndexOutOfBoundsException if <code>length</code> <= 0 */ public void setLengthAndMove(int length) { setStart(end() - length); } - + /** * Resizes the range by <code>delta</code> lines, keeping {@link #start()} constant. - * + * * @param delta the number of lines to resize the range - * @throws LineIndexOutOfBoundsException if <code>-delta</code> >= {@link #length()} + * @throws LineIndexOutOfBoundsException if <code>-delta</code> >= {@link #length()} */ public void resizeBy(int delta) { setLength(length() + delta); } - + /** * Resizes the range by <code>delta</code> lines by moving the start offset, {@link #end()} remains unchanged. - * + * * @param delta the number of lines to resize the range - * @throws LineIndexOutOfBoundsException if <code>-delta</code> >= {@link #length()} + * @throws LineIndexOutOfBoundsException if <code>-delta</code> >= {@link #length()} */ public void resizeAndMoveBy(int delta) { setStart(start() + delta); } - + /** * Splits a range off the end of the receiver. The receiver is shortened to only include * <code>remaining</code> lines after the split. - * + * * @param remaining the number of lines to remain in the receiver, must be in [1, {@link #length() length}) * @return the split off range * @throws LineIndexOutOfBoundsException if <code>remaining</code>>= {@link #length()} or <code>remaining</code><t;= 0 */ public Range split(int remaining) { if (!(remaining < length())) // assert before modification - throw new LineIndexOutOfBoundsException("Remaining must be less than length: " + length()); //$NON-NLS-1$ + throw new LineIndexOutOfBoundsException(Format("Remaining must be less than length: {}", length())); //$NON-NLS-1$ int splitLength= length() - remaining; setLength(remaining); return new Range(end(), splitLength); } - + /** * Returns <code>true</code> if the passed range has the same offset and length as the receiver. - * + * * @param range another line range to compare the receiver to * @return <code>true</code> if <code>range</code> has the same offset and length as the receiver */ @@ -270,7 +270,7 @@ return false; return range.getStartLine() is start() && range.getNumberOfLines() is length(); } - + /* * @see java.lang.Object#clone() */
--- a/dwtx/jface/internal/text/revisions/RevisionPainter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/revisions/RevisionPainter.d Mon Sep 08 00:51:37 2008 +0200 @@ -22,6 +22,7 @@ import dwt.dwthelper.utils; import dwtx.dwtxhelper.Collection; +import tango.text.convert.Format; import dwt.DWT; import dwt.custom.StyledText; @@ -104,8 +105,28 @@ } // RGBs provided by UI Designer - private static const RGB BY_DATE_START_COLOR= new RGB(199, 134, 57); - private static const RGB BY_DATE_END_COLOR= new RGB(241, 225, 206); + private static RGB BY_DATE_START_COLOR_; + private static RGB BY_DATE_START_COLOR(){ + if( BY_DATE_START_COLOR_ is null ){ + synchronized(RevisionPainter.classinfo){ + if( BY_DATE_START_COLOR_ is null ){ + BY_DATE_START_COLOR_ = new RGB(199, 134, 57); + } + } + } + return BY_DATE_START_COLOR_; + } + private static RGB BY_DATE_END_COLOR_; + private static RGB BY_DATE_END_COLOR(){ + if( BY_DATE_END_COLOR_ is null ){ + synchronized(RevisionPainter.classinfo){ + if( BY_DATE_END_COLOR_ is null ){ + BY_DATE_END_COLOR_ = new RGB(241, 225, 206); + } + } + } + return BY_DATE_END_COLOR_; + } /** @@ -150,12 +171,16 @@ /** * The stored shaded colors. */ - private const Map fColors= new HashMap(); + private const Map fColors; /** * The stored focus colors. */ - private const Map fFocusColors= new HashMap(); + private const Map fFocusColors; + this(){ + fColors= new HashMap(); + fFocusColors= new HashMap(); + } /** * Sets the revision information, which is needed to compute the relative age of a revision. * @@ -180,7 +205,7 @@ private RGB adaptColor(Revision revision, bool focus) { RGB rgb; float scale; - if (fRenderingMode is IRevisionRulerColumnExtension.AGE) { + if (fRenderingMode is IRevisionRulerColumnExtension_AGE) { int index= computeAgeIndex(revision); if (index is -1 || fRevisions.size() is 0) { rgb= getBackground().getRGB(); @@ -190,11 +215,11 @@ rgb= gradient[gradient.length - index - 1]; } scale= 0.99f; - } else if (fRenderingMode is IRevisionRulerColumnExtension.AUTHOR) { + } else if (fRenderingMode is IRevisionRulerColumnExtension_AUTHOR) { rgb= revision.getColor(); rgb= Colors.adjustBrightness(rgb, AVERAGE_INTENSITY); scale= 0.6f; - } else if (fRenderingMode is IRevisionRulerColumnExtension.AUTHOR_SHADED_BY_AGE) { + } else if (fRenderingMode is IRevisionRulerColumnExtension_AUTHOR_SHADED_BY_AGE) { rgb= revision.getColor(); rgb= Colors.adjustBrightness(rgb, AVERAGE_INTENSITY); int index= computeAgeIndex(revision); @@ -375,6 +400,9 @@ protected IInformationControl doCreateInformationControl(Shell parent) { if (BrowserInformationControl.isAvailable(parent)) { return new class(parent, JFaceResources.DIALOG_FONT, fIsFocusable) BrowserInformationControl { + public this(Shell parent, String symbolicFontName, bool resizable){ + super(parent, symbolicFontName,resizable); + } /* * @see dwtx.jface.internal.text.html.BrowserInformationControl#setInformation(java.lang.String) * @since 3.3 @@ -413,41 +441,41 @@ * @see dwtx.jface.text.AbstractReusableInformationControlCreator#canReplace(dwtx.jface.text.IInformationControlCreator) */ public bool canReplace(IInformationControlCreator creator) { - return creator.getClass() is getClass() + return creator.classinfo is this.classinfo && (cast(HoverInformationControlCreator) creator).fIsFocusable is fIsFocusable; } } - private static final String fgStyleSheet= "/* Font definitions */\n" + //$NON-NLS-1$ - "body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-family: sans-serif; font-size: 9pt }\n" + //$NON-NLS-1$ - "pre { font-family: monospace; font-size: 9pt }\n" + //$NON-NLS-1$ - "\n" + //$NON-NLS-1$ - "/* Margins */\n" + //$NON-NLS-1$ - "body { overflow: auto; margin-top: 0; margin-bottom: 4; margin-left: 3; margin-right: 0 }\n" + //$NON-NLS-1$ - "h1 { margin-top: 5; margin-bottom: 1 } \n" + //$NON-NLS-1$ - "h2 { margin-top: 25; margin-bottom: 3 }\n" + //$NON-NLS-1$ - "h3 { margin-top: 20; margin-bottom: 3 }\n" + //$NON-NLS-1$ - "h4 { margin-top: 20; margin-bottom: 3 }\n" + //$NON-NLS-1$ - "h5 { margin-top: 0; margin-bottom: 0 }\n" + //$NON-NLS-1$ - "p { margin-top: 10px; margin-bottom: 10px }\n" + //$NON-NLS-1$ - "pre { margin-left: 6 }\n" + //$NON-NLS-1$ - "ul { margin-top: 0; margin-bottom: 10 }\n" + //$NON-NLS-1$ - "li { margin-top: 0; margin-bottom: 0 } \n" + //$NON-NLS-1$ - "li p { margin-top: 0; margin-bottom: 0 } \n" + //$NON-NLS-1$ - "ol { margin-top: 0; margin-bottom: 10 }\n" + //$NON-NLS-1$ - "dl { margin-top: 0; margin-bottom: 10 }\n" + //$NON-NLS-1$ - "dt { margin-top: 0; margin-bottom: 0; font-weight: bold }\n" + //$NON-NLS-1$ - "dd { margin-top: 0; margin-bottom: 0 }\n" + //$NON-NLS-1$ - "\n" + //$NON-NLS-1$ - "/* Styles and colors */\n" + //$NON-NLS-1$ - "a:link { color: #0000FF }\n" + //$NON-NLS-1$ - "a:hover { color: #000080 }\n" + //$NON-NLS-1$ - "a:visited { text-decoration: underline }\n" + //$NON-NLS-1$ - "h4 { font-style: italic }\n" + //$NON-NLS-1$ - "strong { font-weight: bold }\n" + //$NON-NLS-1$ - "em { font-style: italic }\n" + //$NON-NLS-1$ - "var { font-style: italic }\n" + //$NON-NLS-1$ - "th { font-weight: bold }\n" + //$NON-NLS-1$ + private static final String fgStyleSheet= "/* Font definitions */\n" ~ //$NON-NLS-1$ + "body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-family: sans-serif; font-size: 9pt }\n" ~ //$NON-NLS-1$ + "pre { font-family: monospace; font-size: 9pt }\n" ~ //$NON-NLS-1$ + "\n" ~ //$NON-NLS-1$ + "/* Margins */\n" ~ //$NON-NLS-1$ + "body { overflow: auto; margin-top: 0; margin-bottom: 4; margin-left: 3; margin-right: 0 }\n" ~ //$NON-NLS-1$ + "h1 { margin-top: 5; margin-bottom: 1 } \n" ~ //$NON-NLS-1$ + "h2 { margin-top: 25; margin-bottom: 3 }\n" ~ //$NON-NLS-1$ + "h3 { margin-top: 20; margin-bottom: 3 }\n" ~ //$NON-NLS-1$ + "h4 { margin-top: 20; margin-bottom: 3 }\n" ~ //$NON-NLS-1$ + "h5 { margin-top: 0; margin-bottom: 0 }\n" ~ //$NON-NLS-1$ + "p { margin-top: 10px; margin-bottom: 10px }\n" ~ //$NON-NLS-1$ + "pre { margin-left: 6 }\n" ~ //$NON-NLS-1$ + "ul { margin-top: 0; margin-bottom: 10 }\n" ~ //$NON-NLS-1$ + "li { margin-top: 0; margin-bottom: 0 } \n" ~ //$NON-NLS-1$ + "li p { margin-top: 0; margin-bottom: 0 } \n" ~ //$NON-NLS-1$ + "ol { margin-top: 0; margin-bottom: 10 }\n" ~ //$NON-NLS-1$ + "dl { margin-top: 0; margin-bottom: 10 }\n" ~ //$NON-NLS-1$ + "dt { margin-top: 0; margin-bottom: 0; font-weight: bold }\n" ~ //$NON-NLS-1$ + "dd { margin-top: 0; margin-bottom: 0 }\n" ~ //$NON-NLS-1$ + "\n" ~ //$NON-NLS-1$ + "/* Styles and colors */\n" ~ //$NON-NLS-1$ + "a:link { color: #0000FF }\n" ~ //$NON-NLS-1$ + "a:hover { color: #000080 }\n" ~ //$NON-NLS-1$ + "a:visited { text-decoration: underline }\n" ~ //$NON-NLS-1$ + "h4 { font-style: italic }\n" ~ //$NON-NLS-1$ + "strong { font-weight: bold }\n" ~ //$NON-NLS-1$ + "em { font-style: italic }\n" ~ //$NON-NLS-1$ + "var { font-style: italic }\n" ~ //$NON-NLS-1$ + "th { font-weight: bold }\n" ~ //$NON-NLS-1$ ""; //$NON-NLS-1$ /** @@ -597,7 +625,7 @@ /** * The revision rendering mode. */ - private IRevisionRulerColumnExtension.RenderingMode fRenderingMode; + private IRevisionRulerColumnExtension_RenderingMode fRenderingMode; /** * The required with in characters. * @since 3.3 @@ -645,7 +673,7 @@ fRevisionSelectionProvider= new RevisionSelectionProvider(this); fRevisionListeners= new ListenerList(ListenerList.IDENTITY); fAnnotations= new ArrayList(); - fRenderingMode= IRevisionRulerColumnExtension.AUTHOR_SHADED_BY_AGE; + fRenderingMode= IRevisionRulerColumnExtension_AUTHOR_SHADED_BY_AGE; Assert.isLegal(column !is null); Assert.isLegal(sharedColors !is null); @@ -678,7 +706,7 @@ * @param renderingMode the rendering mode * @since 3.3 */ - public void setRenderingMode(IRevisionRulerColumnExtension.RenderingMode renderingMode) { + public void setRenderingMode(IRevisionRulerColumnExtension_RenderingMode renderingMode) { Assert.isLegal(renderingMode !is null); if (fRenderingMode !is renderingMode) { fRenderingMode= renderingMode; @@ -730,7 +758,7 @@ string[0]= '.'; string[1]= ' '; } - fAuthorInset= gc.stringExtent(new String(string)).x; + fAuthorInset= gc.stringExtent(new_String(string)).x; } // recompute colors (show intense colors if ruler is narrow) @@ -802,7 +830,7 @@ public void setModel(IAnnotationModel model) { IAnnotationModel diffModel; if ( cast(IAnnotationModelExtension)model ) - diffModel= (cast(IAnnotationModelExtension) model).getAnnotationModel(IChangeRulerColumn.QUICK_DIFF_MODEL_ID); + diffModel= (cast(IAnnotationModelExtension) model).getAnnotationModel(stringcast(IChangeRulerColumn.QUICK_DIFF_MODEL_ID)); else diffModel= model; @@ -827,7 +855,7 @@ */ private void setDiffer(IAnnotationModel differ) { if ( cast(ILineDiffer)differ || differ is null) { - if (fLineDiffer !is differ) { + if ( cast(Object)fLineDiffer !is cast(Object)differ) { if (fLineDiffer !is null) (cast(IAnnotationModel) fLineDiffer).removeAnnotationModelListener(fAnnotationListener); fLineDiffer= cast(ILineDiffer) differ; @@ -977,14 +1005,14 @@ List ranges= getRangeCache(); // return the interesting subset - int end= end(lines); + int end_= end(lines); int first= -1, last= -1; for (int i= 0; i < ranges.size(); i++) { RevisionRange range= cast(RevisionRange) ranges.get(i); int rangeEnd= end(range); if (first is -1 && rangeEnd > lines.getStartLine()) first= i; - if (first !is -1 && rangeEnd > end) { + if (first !is -1 && rangeEnd > end_) { last= i; break; } @@ -1080,7 +1108,7 @@ widgetStartLine= Math.max(0, range.getStartLine() - visibleStartLine); widgetEndLine= Math.min(visibleEndLine, end(range) - 1); } catch (BadLocationException x) { - x.printStackTrace(); + ExceptionPrintStackTrace(x); // ignore and return null } } @@ -1148,7 +1176,7 @@ } if (added !is null) { for (Iterator it= added.entrySet().iterator(); it.hasNext();) { - Entry entry= cast(Entry) it.next(); + Map.Entry entry= cast(Map.Entry) it.next(); fAnnotationModel.addAnnotation(cast(Annotation) entry.getKey(), cast(Position) entry.getValue()); } } @@ -1239,7 +1267,7 @@ */ private void onFocusLineChanged(int previousLine, int nextLine) { if (DEBUG) - System.out_.println("line: " ~ previousLine ~ " > " ~ nextLine); //$NON-NLS-1$ //$NON-NLS-2$ + System.out_.println(Format("line: {} > {}", previousLine, nextLine)); //$NON-NLS-1$ //$NON-NLS-2$ fFocusLine= nextLine; RevisionRange region= getRange(nextLine); updateFocusRange(region); @@ -1263,7 +1291,7 @@ */ private void onFocusRangeChanged(RevisionRange previousRange, RevisionRange nextRange) { if (DEBUG) - System.out_.println("range: " + previousRange + " > " + nextRange); //$NON-NLS-1$ //$NON-NLS-2$ + System.out_.println(Format("range: {} > {}", previousRange, nextRange)); //$NON-NLS-1$ //$NON-NLS-2$ fFocusRange= nextRange; Revision revision= nextRange is null ? null : nextRange.getRevision(); updateFocusRevision(revision); @@ -1282,7 +1310,7 @@ */ private void onFocusRevisionChanged(Revision previousRevision, Revision nextRevision) { if (DEBUG) - System.out_.println("revision: " + previousRevision + " > " + nextRevision); //$NON-NLS-1$ //$NON-NLS-2$ + System.out_.println(Format("revision: {} > {}", previousRevision, nextRevision)); //$NON-NLS-1$ //$NON-NLS-2$ fFocusRevision= nextRevision; uninstallWheelHandler(); installWheelHandler(); @@ -1294,7 +1322,7 @@ * Uninstalls the mouse wheel handler. */ private void uninstallWheelHandler() { - fControl.removeListener(DWT.MouseWheel, fMouseHandler); + fControl.removeListener(DWT.MouseWheel, cast(Listener)fMouseHandler); fWheelHandlerInstalled= false; } @@ -1547,7 +1575,7 @@ * @since 3.3 */ public void addRevisionListener(IRevisionListener listener) { - fRevisionListeners.add(listener); + fRevisionListeners.add(cast(Object)listener); } /** @@ -1557,7 +1585,7 @@ * @since 3.3 */ public void removeRevisionListener(IRevisionListener listener) { - fRevisionListeners.remove(listener); + fRevisionListeners.remove(cast(Object)listener); } /**
--- a/dwtx/jface/internal/text/revisions/RevisionSelectionProvider.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/revisions/RevisionSelectionProvider.d Mon Sep 08 00:51:37 2008 +0200 @@ -47,7 +47,7 @@ * <p> * Calling {@link #setSelection(ISelection)} will set the current sticky revision on the ruler. * </p> - * + * * @since 3.2 */ public final class RevisionSelectionProvider : ISelectionProvider { @@ -71,17 +71,17 @@ int offset= ts.getOffset(); setSelectedRevision(fPainter.getRevision(offset)); } - + } - + public void dispose() { fPostProvider.removePostSelectionChangedListener(this); } } private const RevisionPainter fPainter; - private const ListenerList fListeners= new ListenerList(); - + private const ListenerList fListeners; + /** * The text viewer once we are installed, <code>null</code> if not installed. */ @@ -103,10 +103,11 @@ /** * Creates a new selection provider. - * + * * @param painter the painter that the created provider interacts with */ this(RevisionPainter painter) { + fListeners= new ListenerList(); fPainter= painter; } @@ -114,16 +115,16 @@ * @see dwtx.jface.viewers.ISelectionProvider#addSelectionChangedListener(dwtx.jface.viewers.ISelectionChangedListener) */ public void addSelectionChangedListener(ISelectionChangedListener listener) { - fListeners.add(listener); + fListeners.add(cast(Object)listener); } /* * @see dwtx.jface.viewers.ISelectionProvider#removeSelectionChangedListener(dwtx.jface.viewers.ISelectionChangedListener) */ public void removeSelectionChangedListener(ISelectionChangedListener listener) { - fListeners.remove(listener); + fListeners.remove(cast(Object)listener); } - + /* * @see dwtx.jface.viewers.ISelectionProvider#getSelection() */ @@ -143,8 +144,8 @@ Object first= (cast(IStructuredSelection) selection).getFirstElement(); if ( cast(Revision)first ) fPainter.handleRevisionSelected(cast(Revision) first); - else if ( cast(String)first ) - fPainter.handleRevisionSelected(cast(String) first); + else if ( auto str = cast(ArrayWrapperString)first ) + fPainter.handleRevisionSelected(str.array); else if (selection.isEmpty()) fPainter.handleRevisionSelected(cast(Revision) null); } @@ -152,7 +153,7 @@ /** * Installs the selection provider on the viewer. - * + * * @param viewer the viewer on which we listen to for post selection events */ void install(ITextViewer viewer) { @@ -166,7 +167,7 @@ } } } - + /** * Uninstalls the selection provider. */ @@ -180,7 +181,7 @@ /** * Private protocol used by {@link RevisionPainter} to signal selection of a revision. - * + * * @param revision the selected revision, or <code>null</code> for none */ void revisionSelected(Revision revision) { @@ -189,7 +190,7 @@ /** * Updates the currently selected revision and sends out an event if it changed. - * + * * @param revision the newly selected revision or <code>null</code> for none */ private void setSelectedRevision(Revision revision) {
--- a/dwtx/jface/internal/text/revisions/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> - <meta content="IBM" name="Author" name="GENERATOR"> - <title>Revision model - Internal Classes</title> -</head> -<body> -<p> -Internal classes and helpers to implement the revision model and its UI presentation. See -the <tt><a href="../../../text/revisions/package.html">org.eclipse.jface.text.revisions</a></tt> -package for the API classes implementing the revision model. -</p> -Contains everything needed to: -<ul> - <li>paint revision information in the vertical ruler</li> - <li>adapt the revision information to (quick) diff scripts</li> -</ul> -<p> -This package is internal and may be subject to change without notice. -</p> -</body> -</html>
--- a/dwtx/jface/internal/text/source/DiffPainter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/internal/text/source/DiffPainter.d Mon Sep 08 00:51:37 2008 +0200 @@ -343,7 +343,7 @@ public void setModel(IAnnotationModel model) { IAnnotationModel newModel; if ( cast(IAnnotationModelExtension)model ) - newModel= (cast(IAnnotationModelExtension) model).getAnnotationModel(IChangeRulerColumn.QUICK_DIFF_MODEL_ID); + newModel= (cast(IAnnotationModelExtension) model).getAnnotationModel(stringcast(IChangeRulerColumn.QUICK_DIFF_MODEL_ID)); else newModel= model; @@ -357,7 +357,7 @@ */ private void setDiffer(IAnnotationModel differ) { if ( cast(ILineDiffer)differ ) { - if (fLineDiffer !is differ) { + if ( cast(Object)fLineDiffer !is cast(Object)differ) { if (fLineDiffer !is null) (cast(IAnnotationModel) fLineDiffer).removeAnnotationModelListener(fAnnotationListener); fLineDiffer= cast(ILineDiffer) differ;
--- a/dwtx/jface/internal/text/source/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> - <meta content="IBM" name="Author" name="GENERATOR"> - <title>Revision model - Internal Classes</title> -</head> -<body> -<p> -Internal support classes and helpers for the <tt>org.eclipse.jface.text.source</tt> package. -</body> -</html>
--- a/dwtx/jface/text/AbstractDocument.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/AbstractDocument.d Mon Sep 08 00:51:37 2008 +0200 @@ -63,7 +63,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -157,8 +156,8 @@ import dwt.dwthelper.utils; import dwtx.dwtxhelper.Collection; - -// import java.util.regex.PatternSyntaxException; +import dwtx.dwtxhelper.regex; +import tango.text.convert.Format; import dwtx.core.runtime.Assert; import dwtx.core.runtime.ListenerList; @@ -334,7 +333,7 @@ * @return the document's text store */ protected ITextStore getStore() { - Assert.isNotNull(fStore); + Assert.isNotNull(cast(Object)fStore); return fStore; } @@ -345,7 +344,7 @@ * @return the document's line tracker */ protected ILineTracker getTracker() { - Assert.isNotNull(fTracker); + Assert.isNotNull(cast(Object)fTracker); return fTracker; } @@ -440,48 +439,48 @@ * @see dwtx.jface.text.IDocument#addDocumentListener(dwtx.jface.text.IDocumentListener) */ public void addDocumentListener(IDocumentListener listener) { - Assert.isNotNull(listener); - fDocumentListeners.add(listener); + Assert.isNotNull(cast(Object)listener); + fDocumentListeners.add(cast(Object)listener); } /* * @see dwtx.jface.text.IDocument#removeDocumentListener(dwtx.jface.text.IDocumentListener) */ public void removeDocumentListener(IDocumentListener listener) { - Assert.isNotNull(listener); - fDocumentListeners.remove(listener); + Assert.isNotNull(cast(Object)listener); + fDocumentListeners.remove(cast(Object)listener); } /* * @see dwtx.jface.text.IDocument#addPrenotifiedDocumentListener(dwtx.jface.text.IDocumentListener) */ public void addPrenotifiedDocumentListener(IDocumentListener listener) { - Assert.isNotNull(listener); - fPrenotifiedDocumentListeners.add(listener); + Assert.isNotNull(cast(Object)listener); + fPrenotifiedDocumentListeners.add(cast(Object)listener); } /* * @see dwtx.jface.text.IDocument#removePrenotifiedDocumentListener(dwtx.jface.text.IDocumentListener) */ public void removePrenotifiedDocumentListener(IDocumentListener listener) { - Assert.isNotNull(listener); - fPrenotifiedDocumentListeners.remove(listener); + Assert.isNotNull(cast(Object)listener); + fPrenotifiedDocumentListeners.remove(cast(Object)listener); } /* * @see dwtx.jface.text.IDocument#addDocumentPartitioningListener(dwtx.jface.text.IDocumentPartitioningListener) */ public void addDocumentPartitioningListener(IDocumentPartitioningListener listener) { - Assert.isNotNull(listener); - fDocumentPartitioningListeners.add(listener); + Assert.isNotNull(cast(Object)listener); + fDocumentPartitioningListeners.add(cast(Object)listener); } /* * @see dwtx.jface.text.IDocument#removeDocumentPartitioningListener(dwtx.jface.text.IDocumentPartitioningListener) */ public void removeDocumentPartitioningListener(IDocumentPartitioningListener listener) { - Assert.isNotNull(listener); - fDocumentPartitioningListeners.remove(listener); + Assert.isNotNull(cast(Object)listener); + fDocumentPartitioningListeners.remove(cast(Object)listener); } /* @@ -798,7 +797,7 @@ fDocumentPartitioningChangedEvent= new DocumentPartitioningChangedEvent(this); Iterator e= fDocumentPartitioners.keySet().iterator(); while (e.hasNext()) { - String partitioning= cast(String) e.next(); + String partitioning= stringcast( e.next() ); IDocumentPartitioner partitioner= cast(IDocumentPartitioner) fDocumentPartitioners.get(partitioning); if ( cast(IDocumentPartitionerExtension3)partitioner ) { @@ -920,7 +919,7 @@ String contentType= null; try { contentType= getContentType(DEFAULT_PARTITIONING, offset, false); - Assert.isNotNull(contentType); + //Assert.isNotNull(contentType); } catch (BadPartitioningException e) { Assert.isTrue(false); } @@ -934,7 +933,7 @@ String[] contentTypes= null; try { contentTypes= getLegalContentTypes(DEFAULT_PARTITIONING); - Assert.isNotNull(contentTypes); + //Assert.isNotNull(contentTypes); } catch (BadPartitioningException e) { Assert.isTrue(false); } @@ -1070,7 +1069,7 @@ ITypedRegion partition= null; try { partition= getPartition(DEFAULT_PARTITIONING, offset, false); - Assert.isNotNull(partition); +// Assert.isNotNull(cast(Object)partition); } catch (BadPartitioningException e) { Assert.isTrue(false); } @@ -1084,7 +1083,7 @@ ITypedRegion[] partitioning= null; try { partitioning= computePartitioning(DEFAULT_PARTITIONING, offset, length, false); - Assert.isNotNull(partitioning); +// Assert.isNotNull(cast(Object)partitioning); } catch (BadPartitioningException e) { Assert.isTrue(false); } @@ -1115,7 +1114,7 @@ String[] categories= new String[fPositions.size()]; Iterator keys= fPositions.keySet().iterator(); for (int i= 0; i < categories.length; i++) - categories[i]= cast(String) keys.next(); + categories[i]= stringcast( keys.next()); return categories; } @@ -1123,9 +1122,7 @@ * @see dwtx.jface.text.IDocument#getPositionUpdaters() */ public IPositionUpdater[] getPositionUpdaters() { - IPositionUpdater[] updaters= new IPositionUpdater[fPositionUpdaters.size()]; - fPositionUpdaters.toArray(updaters); - return updaters; + return arraycast!(IPositionUpdater)(fPositionUpdaters.toArray()); } /* @@ -1151,14 +1148,14 @@ public void insertPositionUpdater(IPositionUpdater updater, int index) { for (int i= fPositionUpdaters.size() - 1; i >= 0; i--) { - if (fPositionUpdaters.get(i) is updater) + if (fPositionUpdaters.get(i) is cast(Object)updater) return; } if (index is fPositionUpdaters.size()) - fPositionUpdaters.add(updater); + fPositionUpdaters.add(cast(Object)updater); else - fPositionUpdaters.add(index, updater); + fPositionUpdaters.add(index, cast(Object)updater); } /* @@ -1252,7 +1249,7 @@ */ public void removePositionUpdater(IPositionUpdater updater) { for (int i= fPositionUpdaters.size() - 1; i >= 0; i--) { - if (fPositionUpdaters.get(i) is updater) { + if (fPositionUpdaters.get(i) is cast(Object)updater) { fPositionUpdaters.remove(i); return; } @@ -1310,7 +1307,7 @@ * @see dwtx.jface.text.IDocument#replace(int, int, java.lang.String) */ public void replace(int pos, int length, String text) { - if (length is 0 && (text is null || text.length() is 0)) + if (length is 0 && (text is null || text.length is 0)) replace(pos, length, text, getModificationStamp()); else replace(pos, length, text, getNextModificationStamp()); @@ -1607,9 +1604,7 @@ public String[] getPartitionings() { if (fDocumentPartitioners is null) return new String[0]; - String[] partitionings= new String[fDocumentPartitioners.size()]; - fDocumentPartitioners.keySet().toArray(partitionings); - return partitionings; + return stringcast(fDocumentPartitioners.keySet().toArray()); } /* @@ -1626,7 +1621,7 @@ } else { if (fDocumentPartitioners is null) fDocumentPartitioners= new HashMap(); - fDocumentPartitioners.put(partitioning, partitioner); + fDocumentPartitioners.put(partitioning, cast(Object)partitioner); } DocumentPartitioningChangedEvent event= new DocumentPartitioningChangedEvent(this); event.setPartitionChange(partitioning, 0, getLength()); @@ -1677,7 +1672,7 @@ fDocumentRewriteSession= new DocumentRewriteSession(sessionType); if (DEBUG) - System.out_.println("AbstractDocument: Starting rewrite session: " + fDocumentRewriteSession); //$NON-NLS-1$ + System.out_.println(Format("AbstractDocument: Starting rewrite session: {}", fDocumentRewriteSession)); //$NON-NLS-1$ fireRewriteSessionChanged(new DocumentRewriteSessionEvent(this, fDocumentRewriteSession, DocumentRewriteSessionEvent.SESSION_START)); @@ -1724,7 +1719,7 @@ if (fDocumentRewriteSession is session) { if (DEBUG) - System.out_.println("AbstractDocument: Stopping rewrite session: " + session); //$NON-NLS-1$ + System.out_.println(Format("AbstractDocument: Stopping rewrite session: {}", session)); //$NON-NLS-1$ DocumentRewriteSessionType sessionType= session.getSessionType(); if (DocumentRewriteSessionType.SEQUENTIAL is sessionType || DocumentRewriteSessionType.STRICTLY_SEQUENTIAL is sessionType) @@ -1754,7 +1749,7 @@ DocumentPartitioningChangedEvent event= new DocumentPartitioningChangedEvent(this); Iterator e= fDocumentPartitioners.keySet().iterator(); while (e.hasNext()) { - String partitioning= cast(String) e.next(); + String partitioning= stringcast( e.next()); IDocumentPartitioner partitioner= cast(IDocumentPartitioner) fDocumentPartitioners.get(partitioning); if ( cast(IDocumentPartitionerExtension3)partitioner ) { IDocumentPartitionerExtension3 extension= cast(IDocumentPartitionerExtension3) partitioner; @@ -1772,9 +1767,9 @@ * @since 3.1 */ public void addDocumentRewriteSessionListener(IDocumentRewriteSessionListener listener) { - Assert.isNotNull(listener); - if (! fDocumentRewriteSessionListeners.contains(listener)) - fDocumentRewriteSessionListeners.add(listener); + Assert.isNotNull(cast(Object)listener); + if (! fDocumentRewriteSessionListeners.contains(cast(Object)listener)) + fDocumentRewriteSessionListeners.add(cast(Object)listener); } /* @@ -1782,8 +1777,8 @@ * @since 3.1 */ public void removeDocumentRewriteSessionListener(IDocumentRewriteSessionListener listener) { - Assert.isNotNull(listener); - fDocumentRewriteSessionListeners.remove(listener); + Assert.isNotNull(cast(Object)listener); + fDocumentRewriteSessionListeners.remove(cast(Object)listener); } /** @@ -1804,7 +1799,7 @@ extension.stopRewriteSession(session); if (DEBUG) - System.out_.println("AbstractDocument: Flushing rewrite session for partition type: " + partitioning); //$NON-NLS-1$ + System.out_.println(Format("AbstractDocument: Flushing rewrite session for partition type: {}", partitioning)); //$NON-NLS-1$ DocumentPartitioningChangedEvent event= new DocumentPartitioningChangedEvent(this); event.setPartitionChange(partitioning, 0, getLength());
--- a/dwtx/jface/text/AbstractHoverInformationControlManager.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/AbstractHoverInformationControlManager.d Mon Sep 08 00:51:37 2008 +0200 @@ -61,7 +61,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -153,11 +152,8 @@ import dwtx.jface.text.ITextViewerExtension4; // packageimport import dwtx.jface.text.ITypedRegion; // packageimport - import dwt.dwthelper.utils; - - - +import tango.text.convert.Format; import dwt.DWT; import dwt.events.ControlEvent; @@ -640,7 +636,7 @@ if (fIsComputing || fIsInRestartMode || (fSubjectControl !is null && !fSubjectControl.isDisposed() && fSubjectControl.getShell() !is fSubjectControl.getShell().getDisplay().getActiveShell())) { if (DEBUG) - System.out_.println("AbstractHoverInformationControlManager...mouseHover: @ " + event.x + "/" + event.y + " : hover cancelled: fIsComputing= " + fIsComputing + ", fIsInRestartMode= " + fIsInRestartMode); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ + System.out_.println(Format("AbstractHoverInformationControlManager...mouseHover: @ {}/{} : hover cancelled: fIsComputing= {}, fIsInRestartMode= {}", event.x, event.y, fIsComputing, fIsInRestartMode)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ return; } @@ -1092,6 +1088,9 @@ protected Point getHoverEventLocation() { return fHoverEvent !is null ? new Point(fHoverEvent.x, fHoverEvent.y) : new Point(-1, -1); } + package Point getHoverEventLocation_package() { + return getHoverEventLocation(); + } /** * Returns the most recent mouse hover event. @@ -1123,11 +1122,17 @@ * @nooverride This method is not intended to be re-implemented or extended by clients. */ public InternalAccessor getInternalAccessor() { - return new class() MyInternalAccessor { + return new MyInternalAccessor2(this); + } + static class MyInternalAccessor2 : MyInternalAccessor { + AbstractHoverInformationControlManager outer_; + this( AbstractHoverInformationControlManager a ){ + outer_=a; + super(a); + } public void setHoverEnrichMode(ITextViewerExtension8_EnrichMode mode) { - this.outer.setHoverEnrichMode(mode); + outer_.setHoverEnrichMode(mode); } - }; - } + } }
--- a/dwtx/jface/text/AbstractInformationControlManager.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/AbstractInformationControlManager.d Mon Sep 08 00:51:37 2008 +0200 @@ -203,33 +203,37 @@ * * @since 3.4 */ - class MyInternalAccessor : InternalAccessor { + public static class MyInternalAccessor : InternalAccessor { + AbstractInformationControlManager outer_; + this( AbstractInformationControlManager a ){ + outer_=a; + } public IInformationControl getCurrentInformationControl() { - return this.outer.getCurrentInformationControl(); + return outer_.getCurrentInformationControl(); } public void setInformationControlReplacer(InformationControlReplacer replacer) { - this.outer.setInformationControlReplacer(replacer); + outer_.setInformationControlReplacer(replacer); } public InformationControlReplacer getInformationControlReplacer() { - return this.outer.getInformationControlReplacer(); + return outer_.getInformationControlReplacer(); } public bool canReplace(IInformationControl control) { - return this.outer.canReplace(control); + return outer_.canReplace(control); } public bool isReplaceInProgress() { - return this.outer.isReplaceInProgress(); + return outer_.isReplaceInProgress(); } public void replaceInformationControl(bool takeFocus) { - this.outer.replaceInformationControl(takeFocus); + outer_.replaceInformationControl(takeFocus); } public void cropToClosestMonitor(Rectangle bounds) { - this.outer.cropToClosestMonitor(bounds); + outer_.cropToClosestMonitor(bounds); } public void setHoverEnrichMode(EnrichMode mode) { @@ -1592,6 +1596,6 @@ * @nooverride This method is not intended to be re-implemented or extended by clients. */ public InternalAccessor getInternalAccessor() { - return new MyInternalAccessor(); + return new MyInternalAccessor(this); } }
--- a/dwtx/jface/text/AbstractLineTracker.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/AbstractLineTracker.d Mon Sep 08 00:51:37 2008 +0200 @@ -155,6 +155,7 @@ import dwt.dwthelper.utils; +import tango.text.convert.Format; import dwtx.dwtxhelper.Collection; @@ -375,6 +376,9 @@ if (fNeedsConversion) { fNeedsConversion= false; fDelegate= new class(cast(ListLineTracker) fDelegate) TreeLineTracker { + this(ListLineTracker arg){ + super(arg); + } protected DelimiterInfo nextDelimiterInfo(String text, int offset) { return this.outer.nextDelimiterInfo(text, offset); } @@ -438,7 +442,7 @@ */ protected final void flushRewriteSession() { if (DEBUG) - System.out_.println("AbstractLineTracker: Flushing rewrite session: " + fActiveRewriteSession); //$NON-NLS-1$ + System.out_.println(Format("AbstractLineTracker: Flushing rewrite session: {}", fActiveRewriteSession)); //$NON-NLS-1$ Iterator e= fPendingRequests.iterator();
--- a/dwtx/jface/text/AbstractReusableInformationControlCreator.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/AbstractReusableInformationControlCreator.d Mon Sep 08 00:51:37 2008 +0200 @@ -172,7 +172,7 @@ */ public abstract class AbstractReusableInformationControlCreator : IInformationControlCreator, IInformationControlCreatorExtension, DisposeListener { - private Map fInformationControls= new HashMap(); + private Map fInformationControls; /** * Creates the control. @@ -182,6 +182,10 @@ */ protected abstract IInformationControl doCreateInformationControl(Shell parent); + this(){ + fInformationControls= new HashMap(); + } + /* * @see dwtx.jface.text.IInformationControlCreator#createInformationControl(dwt.widgets.Shell) */ @@ -190,7 +194,7 @@ if (control is null) { control= doCreateInformationControl(parent); control.addDisposeListener(this); - fInformationControls.put(parent, control); + fInformationControls.put(parent, cast(Object)control); } return control; } @@ -211,13 +215,13 @@ * @see dwtx.jface.text.IInformationControlCreatorExtension#canReuse(dwtx.jface.text.IInformationControl) */ public bool canReuse(IInformationControl control) { - return fInformationControls.containsValue(control); + return fInformationControls.containsValue(cast(Object)control); } /* * @see dwtx.jface.text.IInformationControlCreatorExtension#canReplace(dwtx.jface.text.IInformationControlCreator) */ public bool canReplace(IInformationControlCreator creator) { - return creator.getClass() is getClass(); + return creator.classinfo is this.classinfo; } }
--- a/dwtx/jface/text/Assert.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/Assert.d Mon Sep 08 00:51:37 2008 +0200 @@ -173,7 +173,7 @@ * Note that an <code>assert</code> statement is slated to be added to the * Java language in JDK 1.4, rending this class obsolete. * </p> - * + * * @deprecated As of 3.3, replaced by {@link dwtx.core.runtime.Assert} * @noinstantiate This class is not intended to be instantiated by clients. */ @@ -254,7 +254,7 @@ */ public static bool isLegal(bool expression, String message) { if (!expression) - throw new IllegalArgumentException("assertion failed; " + message); //$NON-NLS-1$ + throw new IllegalArgumentException("assertion failed; " ~ message); //$NON-NLS-1$ return expression; } @@ -304,7 +304,7 @@ */ public static void isNotNull(Object object, String message) { if (object is null) - throw new AssertionFailedException("null argument;" + message);//$NON-NLS-1$ + throw new AssertionFailedException("null argument;" ~ message);//$NON-NLS-1$ } /** @@ -335,7 +335,7 @@ */ public static bool isTrue(bool expression, String message) { if (!expression) - throw new AssertionFailedException("Assertion failed: "+message);//$NON-NLS-1$ + throw new AssertionFailedException("Assertion failed: "~message);//$NON-NLS-1$ return expression; } }
--- a/dwtx/jface/text/BadLocationException.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/BadLocationException.d Mon Sep 08 00:51:37 2008 +0200 @@ -180,7 +180,7 @@ * Creates a new bad location exception. */ public this() { - super(); + super(null); } /**
--- a/dwtx/jface/text/BadPositionCategoryException.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/BadPositionCategoryException.d Mon Sep 08 00:51:37 2008 +0200 @@ -182,7 +182,7 @@ * Creates a new bad position category exception. */ public this() { - super(); + super( null ); } /**
--- a/dwtx/jface/text/ConfigurableLineTracker.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/ConfigurableLineTracker.d Mon Sep 08 00:51:37 2008 +0200 @@ -61,7 +61,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -178,7 +177,7 @@ /** The strings which are considered being the line delimiter */ private String[] fDelimiters; /** A predefined delimiter information which is always reused as return value */ - private AbstractLineTracker_DelimiterInfo fDelimiterInfo= new AbstractLineTracker_DelimiterInfo(); + private AbstractLineTracker_DelimiterInfo fDelimiterInfo; /** @@ -188,7 +187,8 @@ * may not be <code>null</code> and must be longer than 0 */ public this(String[] legalLineDelimiters) { - Assert.isTrue(legalLineDelimiters !is null && legalLineDelimiters.length > 0); + Assert.isTrue(legalLineDelimiters.length > 0); + fDelimiterInfo= new AbstractLineTracker_DelimiterInfo(); fDelimiters= TextUtilities.copy(legalLineDelimiters); }
--- a/dwtx/jface/text/CopyOnWriteTextStore.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/CopyOnWriteTextStore.d Mon Sep 08 00:51:37 2008 +0200 @@ -61,7 +61,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -188,7 +187,7 @@ * Create an empty text store. */ private this() { - super(); +// super(); } /** @@ -196,7 +195,7 @@ * @param text the initial content */ private this(String text) { - super(); +// super(); set(text); } @@ -239,7 +238,7 @@ } /** The underlying "real" text store */ - protected ITextStore fTextStore= new StringTextStore(); + protected ITextStore fTextStore; /** A modifiable <code>ITextStore</code> instance */ private const ITextStore fModifiableTextStore; @@ -247,13 +246,14 @@ /** * Creates an empty text store. The given text store will be used upon first * modification attempt. - * + * * @param modifiableTextStore * a modifiable <code>ITextStore</code> instance, may not be * <code>null</code> */ public this(ITextStore modifiableTextStore) { - Assert.isNotNull(modifiableTextStore); + Assert.isNotNull(cast(Object)modifiableTextStore); + fTextStore= new StringTextStore(); fTextStore= new StringTextStore(); fModifiableTextStore= modifiableTextStore; }
--- a/dwtx/jface/text/CursorLinePainter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/CursorLinePainter.d Mon Sep 08 00:51:37 2008 +0200 @@ -187,9 +187,9 @@ private IPaintPositionManager fPositionManager; /** Keeps track of the line to be painted */ - private Position fCurrentLine= new Position(0, 0); + private Position fCurrentLine; /** Keeps track of the line to be cleared */ - private Position fLastLine= new Position(0, 0); + private Position fLastLine; /** Keeps track of the line number of the last painted line */ private int fLastLineNumber= -1; /** Indicates whether this painter is active */ @@ -201,6 +201,8 @@ * @param textViewer the source viewer for which to create a painter */ public this(ITextViewer textViewer) { + fCurrentLine= new Position(0, 0); + fLastLine= new Position(0, 0); fViewer= textViewer; } @@ -251,10 +253,10 @@ fLastLine.offset= fCurrentLine.offset; fLastLine.length= fCurrentLine.length; - fLastLine.isDeleted= fCurrentLine.isDeleted; + fLastLine.isDeleted_= fCurrentLine.isDeleted_; - if (fCurrentLine.isDeleted) { - fCurrentLine.isDeleted= false; + if (fCurrentLine.isDeleted_) { + fCurrentLine.isDeleted_= false; fPositionManager.managePosition(fCurrentLine); }
--- a/dwtx/jface/text/DefaultDocumentAdapter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/DefaultDocumentAdapter.d Mon Sep 08 00:51:37 2008 +0200 @@ -60,7 +60,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -185,7 +184,7 @@ /** The original line delimiters */ private String[] fOriginalLineDelimiters; /** The registered text change listeners */ - private List fTextChangeListeners= new ArrayList(1); + private List fTextChangeListeners; /** * The remembered document event * @since 2.0 @@ -212,7 +211,7 @@ * The data of the event at receipt of <code>documentAboutToBeChanged</code> * @since 2.1 */ - private DocumentEvent fOriginalEvent= new DocumentEvent(); + private DocumentEvent fOriginalEvent; /** @@ -220,6 +219,8 @@ * any document. */ public this() { + fTextChangeListeners= new ArrayList(1); + fOriginalEvent= new DocumentEvent(); } /** @@ -254,17 +255,17 @@ * @see StyledTextContent#addTextChangeListener(TextChangeListener) */ public void addTextChangeListener(TextChangeListener listener) { - Assert.isNotNull(listener); - if (!fTextChangeListeners.contains(listener)) - fTextChangeListeners.add(listener); + Assert.isNotNull(cast(Object)listener); + if (!fTextChangeListeners.contains(cast(Object)listener)) + fTextChangeListeners.add(cast(Object)listener); } /* * @see StyledTextContent#removeTextChangeListener(TextChangeListener) */ public void removeTextChangeListener(TextChangeListener listener) { - Assert.isNotNull(listener); - fTextChangeListeners.remove(listener); + Assert.isNotNull(cast(Object)listener); + fTextChangeListeners.remove(cast(Object)listener); } /** @@ -563,4 +564,12 @@ fOriginalLineDelimiters= fDocument.getLegalLineDelimiters(); fIsForwarding= false; } + + /++ + + DWT extension + +/ + public int utf8AdjustOffset( int offset ){ + implMissing(__FILE__,__LINE__); + return offset; + } }
--- a/dwtx/jface/text/DefaultInformationControl.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/DefaultInformationControl.d Mon Sep 08 00:51:37 2008 +0200 @@ -258,7 +258,7 @@ /** The information presenter, or <code>null</code> if none. */ private const IInformationPresenter fPresenter; /** A cached text presentation */ - private const TextPresentation fPresentation= new TextPresentation(); + private const TextPresentation fPresentation; /** * Additional styles to use for the text control. @@ -275,6 +275,7 @@ * @since 3.4 */ public this(Shell parent, bool isResizeable) { + fPresentation= new TextPresentation(); super(parent, isResizeable); fAdditionalTextStyles= isResizeable ? DWT.V_SCROLL | DWT.H_SCROLL : DWT.NONE; fPresenter= new HTMLTextPresenter(!isResizeable); @@ -304,6 +305,7 @@ * @since 3.4 */ public this(Shell parent, String statusFieldText, IInformationPresenter presenter) { + fPresentation= new TextPresentation(); super(parent, statusFieldText); fAdditionalTextStyles= DWT.NONE; fPresenter= presenter; @@ -334,6 +336,7 @@ * @since 3.4 */ public this(Shell parent, ToolBarManager toolBarManager, IInformationPresenter presenter) { + fPresentation= new TextPresentation(); super(parent, toolBarManager); fAdditionalTextStyles= DWT.V_SCROLL | DWT.H_SCROLL; fPresenter= presenter; @@ -393,6 +396,7 @@ * @deprecated As of 3.4, replaced by simpler constructors */ public this(Shell parentShell, int shellStyle, int style, IInformationPresenter presenter, String statusFieldText) { + fPresentation= new TextPresentation(); super(parentShell, DWT.NO_FOCUS | DWT.ON_TOP | shellStyle, statusFieldText, null); fAdditionalTextStyles= style; fPresenter= presenter; @@ -426,6 +430,7 @@ * @deprecated As of 3.4, replaced by {@link #DefaultInformationControl(Shell, String, DefaultInformationControl.IInformationPresenter)} */ public this(Shell parent, int textStyles, IInformationPresenter presenter, String statusFieldText) { + fPresentation= new TextPresentation(); super(parent, statusFieldText); fAdditionalTextStyles= textStyles; fPresenter= presenter;
--- a/dwtx/jface/text/DefaultTextDoubleClickStrategy.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/DefaultTextDoubleClickStrategy.d Mon Sep 08 00:51:37 2008 +0200 @@ -321,7 +321,7 @@ * Creates a new default text double click strategy. */ public this() { - super(); +// super(); } /* @@ -343,8 +343,7 @@ fDocIter.setDocument(document, line); - UBreakIterator breakIter= UBreakIterator.getWordInstance(); - breakIter.setText(fDocIter); + UBreakIterator breakIter= UBreakIterator.openWordIterator( ULocale.Default, fDocIter ); int start= breakIter.preceding(position); if (start is UBreakIterator.DONE)
--- a/dwtx/jface/text/DefaultUndoManager.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/DefaultUndoManager.d Mon Sep 08 00:51:37 2008 +0200 @@ -167,6 +167,7 @@ import dwt.events.KeyListener; import dwt.events.MouseEvent; import dwt.events.MouseListener; +import dwt.widgets.Event; import dwt.widgets.Display; import dwt.widgets.Shell; import dwtx.core.commands.ExecutionException; @@ -453,9 +454,9 @@ protected void updateCommand() { fText= fTextBuffer.toString(); - fTextBuffer.setLength(0); + fTextBuffer.truncate(0); fPreservedText= fPreservedTextBuffer.toString(); - fPreservedTextBuffer.setLength(0); + fPreservedTextBuffer.truncate(0); } /** @@ -535,7 +536,7 @@ String delimiter= ", "; //$NON-NLS-1$ StringBuffer text= new StringBuffer(super.toString()); text.append("\n"); //$NON-NLS-1$ - text.append(this.getClass().getName()); + text.append(this.classinfo.name); text.append(" undo modification stamp: "); //$NON-NLS-1$ text.append(fUndoModificationStamp); text.append(" redo modification stamp: "); //$NON-NLS-1$ @@ -584,7 +585,7 @@ class CompoundTextCommand : TextCommand { /** The list of individual commands */ - private List fCommands= new ArrayList(); + private List fCommands; /** * Creates a new compound text command. @@ -594,6 +595,7 @@ */ this(IUndoContext context) { super(context); + fCommands= new ArrayList(); } /** @@ -882,12 +884,12 @@ case OperationHistoryEvent.ABOUT_TO_REDO: // if this is one of our operations if (event.getOperation().hasContext(fUndoContext)) { - fTextViewer.getTextWidget().getDisplay().syncExec(dgRunnable((Event event_, int type_ ) { + fTextViewer.getTextWidget().getDisplay().syncExec(dgRunnable((OperationHistoryEvent event_, int type_ ) { // if we are undoing/redoing a command we generated, then ignore // the document changes associated with this undo or redo. - if (cast(TextCommand)event_.getOperation() ) { + if (event_.getOperation() ) { if ( cast(TextViewer)fTextViewer ) - (cast(TextViewer)fTextViewer).ignoreAutoEditStrategies(true); + (cast(TextViewer)fTextViewer).ignoreAutoEditStrategies_package(true); listenToTextChanges(false); // in the undo case only, make sure compounds are closed @@ -916,7 +918,7 @@ listenToTextChanges(true); fOperation= null; if ( cast(TextViewer)fTextViewer ) - (cast(TextViewer)fTextViewer).ignoreAutoEditStrategies(false); + (cast(TextViewer)fTextViewer).ignoreAutoEditStrategies_package(false); } }); } @@ -927,9 +929,9 @@ } /** Text buffer to collect text which is inserted into the viewer */ - private StringBuffer fTextBuffer= new StringBuffer(); + private StringBuffer fTextBuffer; /** Text buffer to collect viewer content which has been replaced */ - private StringBuffer fPreservedTextBuffer= new StringBuffer(); + private StringBuffer fPreservedTextBuffer; /** The document modification stamp for undo. */ protected long fPreservedUndoModificationStamp= IDocumentExtension4.UNKNOWN_MODIFICATION_STAMP; /** The document modification stamp for redo. */ @@ -989,6 +991,9 @@ * @param undoLevel the length of this manager's history */ public this(int undoLevel) { + fTextBuffer= new StringBuffer(); + fPreservedTextBuffer= new StringBuffer(); + fHistoryListener= new HistoryListener(); fHistory= OperationHistoryFactory.getOperationHistory(); setMaximalUndoLevel(undoLevel); @@ -1157,7 +1162,7 @@ if (index > -1) { char c; int length= text.length(); - for (int i= delimiters[index].length(); i < length; i++) { + for (int i= delimiters[index].length; i < length; i++) { c= text.charAt(i); if (c !is ' ' && c !is '\t') return false; @@ -1220,7 +1225,7 @@ } else { if (length is 0) { // text will be deleted by backspace or DEL key or empty clipboard - length= replacedText.length(); + length= replacedText.length; String[] delimiters= fTextViewer.getDocument().getLegalLineDelimiters(); if ((length is 1) || TextUtilities.equals(delimiters, replacedText) > -1) { @@ -1243,7 +1248,8 @@ // repeated backspace // insert in buffer and extend command range - fPreservedTextBuffer.insert(0, replacedText); + fPreservedTextBuffer.select(0, 0); + fPreservedTextBuffer.replace(replacedText); fCurrent.fStart= modelStart; } else { @@ -1275,7 +1281,7 @@ // text will be replaced if (length is 1) { - length= replacedText.length(); + length= replacedText.length; String[] delimiters= fTextViewer.getDocument().getLegalLineDelimiters(); if ((length is 1) || TextUtilities.equals(delimiters, replacedText) > -1) { @@ -1328,7 +1334,7 @@ shell= st.getShell(); } if (Display.getCurrent() !is null) - MessageDialog.openError(shell, title, ex.getLocalizedMessage()); + MessageDialog.openError(shell, title, ex.msg/+getLocalizedMessage()+/); else { Display display; Shell finalShell= shell; @@ -1337,7 +1343,7 @@ else display= Display.getDefault(); display.syncExec(dgRunnable( { - MessageDialog.openError(finalShell, title, ex.getLocalizedMessage()); + MessageDialog.openError(finalShell, title, ex.msg/+getLocalizedMessage()+/); })); } } @@ -1384,8 +1390,8 @@ fCurrent= null; fTextViewer= null; disposeCommandStack(); - fTextBuffer= null; - fPreservedTextBuffer= null; + fTextBuffer.clear(); + fPreservedTextBuffer.clear(); fUndoContext= null; } } @@ -1400,8 +1406,8 @@ fFoldingIntoCompoundChange= false; fInserting= false; fOverwriting= false; - fTextBuffer.setLength(0); - fPreservedTextBuffer.setLength(0); + fTextBuffer.truncate(0); + fPreservedTextBuffer.truncate(0); fPreservedUndoModificationStamp= IDocumentExtension4.UNKNOWN_MODIFICATION_STAMP; fPreservedRedoModificationStamp= IDocumentExtension4.UNKNOWN_MODIFICATION_STAMP; }
--- a/dwtx/jface/text/DocumentClone.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/DocumentClone.d Mon Sep 08 00:51:37 2008 +0200 @@ -176,7 +176,7 @@ * @param content the content */ public this(String content) { - Assert.isNotNull(content); + //Assert.isNotNull(content); fContent= content; }
--- a/dwtx/jface/text/DocumentCommand.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/DocumentCommand.d Mon Sep 08 00:51:37 2008 +0200 @@ -18,9 +18,14 @@ import dwtx.jface.text.IRegion; // packageimport import dwtx.jface.text.IDocumentListener; // packageimport import dwtx.jface.text.IDocument; // packageimport +import dwtx.jface.text.BadLocationException; // packageimport +import dwtx.jface.text.DefaultPositionUpdater; // packageimport +import dwtx.jface.text.Position; // packageimport +import dwtx.jface.text.BadPositionCategoryException; // packageimport import dwt.dwthelper.utils; import dwtx.dwtxhelper.Collection; +import tango.core.Exception; import dwt.events.VerifyEvent; import dwtx.core.runtime.Assert; @@ -62,7 +67,7 @@ */ public this(int offset, int length, String text, IDocumentListener owner) { if (offset < 0 || length < 0) - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); fOffset= offset; fLength= length; fText= text; @@ -75,7 +80,7 @@ * @return the length delta for this command */ public int getDeltaLength() { - return (fText is null ? 0 : fText.length()) - fLength; + return (fText is null ? 0 : fText.length) - fLength; } /** @@ -141,7 +146,7 @@ */ public this(ListIterator listIterator) { if (listIterator is null) - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); fListIterator= listIterator; } @@ -190,7 +195,7 @@ */ public this(List commands, Command command, bool forward) { if (commands is null || command is null) - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); fIterator= forward ? commands.iterator() : new ReverseListIterator(commands.listIterator(commands.size())); fCommand= command; fForward= forward; @@ -209,7 +214,7 @@ public Object next() { if (!hasNext()) - throw new NoSuchElementException(); + throw new NoSuchElementException(null); if (fCommand is null) return fIterator.next(); @@ -232,7 +237,7 @@ return tempCommand; } else { - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); } } @@ -266,7 +271,7 @@ * Additional document commands. * @since 2.1 */ - private const List fCommands= new ArrayList(); + private const List fCommands; /** * Indicates whether the caret should be shifted by this command. * @since 3.0 @@ -277,7 +282,8 @@ /** * Creates a new document command. */ - protected this() { + /+protected+/ this() { + fCommands= new ArrayList(); } /** @@ -435,6 +441,7 @@ } catch (BadPositionCategoryException e) { // ignore } finally { + delegate(){ if (updateCaret()) { document.removePositionUpdater(updater); try { @@ -444,6 +451,7 @@ } caretOffset= caretPosition.getOffset(); } + }(); } }
--- a/dwtx/jface/text/DocumentEvent.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/DocumentEvent.d Mon Sep 08 00:51:37 2008 +0200 @@ -211,7 +211,7 @@ */ public this(IDocument doc, int offset, int length, String text) { - Assert.isNotNull(doc); + Assert.isNotNull(cast(Object)doc); Assert.isTrue(offset >= 0); Assert.isTrue(length >= 0);
--- a/dwtx/jface/text/DocumentPartitioningChangedEvent.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/DocumentPartitioningChangedEvent.d Mon Sep 08 00:51:37 2008 +0200 @@ -173,7 +173,7 @@ /** The document whose partitionings changed */ private const IDocument fDocument; /** The map of partitionings to changed regions. */ - private const Map fMap= new HashMap(); + private const Map fMap; /** @@ -183,6 +183,7 @@ * @param document the changed document */ public this(IDocument document) { + fMap= new HashMap(); fDocument= document; } @@ -212,9 +213,7 @@ * @return the set of changed partitionings */ public String[] getChangedPartitionings() { - String[] partitionings= new String[fMap.size()]; - fMap.keySet().toArray(partitionings); - return partitionings; + return stringcast(fMap.keySet().toArray()); } /** @@ -225,7 +224,7 @@ * @param length the region length */ public void setPartitionChange(String partitioning, int offset, int length) { - Assert.isNotNull(partitioning); + //Assert.isNotNull(partitioning); fMap.put(partitioning, new Region(offset, length)); }
--- a/dwtx/jface/text/DocumentRewriteSession.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/DocumentRewriteSession.d Mon Sep 08 00:51:37 2008 +0200 @@ -174,7 +174,7 @@ * * @param sessionType the type of this session */ - protected this(DocumentRewriteSessionType sessionType) { + /+protected+/ this(DocumentRewriteSessionType sessionType) { fSessionType= sessionType; } @@ -191,6 +191,7 @@ * @see java.lang.Object#toString() */ public override String toString() { - return (new StringBuffer()).append(toHash()).toString(); + static assert( hash_t.sizeof is 4 ); + return (new StringBuffer()).append(Integer.toString(toHash())).toString(); } }
--- a/dwtx/jface/text/DocumentRewriteSessionEvent.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/DocumentRewriteSessionEvent.d Mon Sep 08 00:51:37 2008 +0200 @@ -61,7 +61,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -169,8 +168,28 @@ */ public class DocumentRewriteSessionEvent { - public const static Object SESSION_START= new Object(); - public const static Object SESSION_STOP= new Object(); + private static Object SESSION_START_; + public static Object SESSION_START(){ + if( SESSION_START_ is null ){ + synchronized(DocumentRewriteSessionEvent.classinfo){ + if( SESSION_START_ is null ){ + SESSION_START_ = new Object(); + } + } + } + return SESSION_START_; + } + private static Object SESSION_STOP_; + public static Object SESSION_STOP(){ + if( SESSION_STOP_ is null ){ + synchronized(DocumentRewriteSessionEvent.classinfo){ + if( SESSION_STOP_ is null ){ + SESSION_STOP_ = new Object(); + } + } + } + return SESSION_STOP_; + } /** The changed document */ public IDocument fDocument; @@ -189,7 +208,7 @@ * {@link DocumentRewriteSessionEvent#SESSION_STOP}. */ public this(IDocument doc, DocumentRewriteSession session, Object changeType) { - Assert.isNotNull(doc); + Assert.isNotNull(cast(Object)doc); Assert.isNotNull(session); fDocument= doc;
--- a/dwtx/jface/text/DocumentRewriteSessionType.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/DocumentRewriteSessionType.d Mon Sep 08 00:51:37 2008 +0200 @@ -12,151 +12,8 @@ *******************************************************************************/ module dwtx.jface.text.DocumentRewriteSessionType; -import dwtx.jface.text.IDocumentPartitioningListener; // packageimport -import dwtx.jface.text.DefaultTextHover; // packageimport -import dwtx.jface.text.AbstractInformationControl; // packageimport -import dwtx.jface.text.TextUtilities; // packageimport -import dwtx.jface.text.IInformationControlCreatorExtension; // packageimport -import dwtx.jface.text.AbstractInformationControlManager; // packageimport -import dwtx.jface.text.ITextViewerExtension2; // packageimport -import dwtx.jface.text.IDocumentPartitioner; // packageimport -import dwtx.jface.text.DefaultIndentLineAutoEditStrategy; // packageimport -import dwtx.jface.text.ITextSelection; // packageimport -import dwtx.jface.text.Document; // packageimport -import dwtx.jface.text.FindReplaceDocumentAdapterContentProposalProvider; // packageimport -import dwtx.jface.text.ITextListener; // packageimport -import dwtx.jface.text.BadPartitioningException; // packageimport -import dwtx.jface.text.ITextViewerExtension5; // packageimport -import dwtx.jface.text.IDocumentPartitionerExtension3; // packageimport -import dwtx.jface.text.IUndoManager; // packageimport -import dwtx.jface.text.ITextHoverExtension2; // packageimport -import dwtx.jface.text.IRepairableDocument; // packageimport -import dwtx.jface.text.IRewriteTarget; // packageimport -import dwtx.jface.text.DefaultPositionUpdater; // packageimport -import dwtx.jface.text.RewriteSessionEditProcessor; // packageimport -import dwtx.jface.text.TextViewerHoverManager; // packageimport -import dwtx.jface.text.DocumentRewriteSession; // packageimport -import dwtx.jface.text.TextViewer; // packageimport -import dwtx.jface.text.ITextViewerExtension8; // packageimport -import dwtx.jface.text.RegExMessages; // packageimport -import dwtx.jface.text.IDelayedInputChangeProvider; // packageimport -import dwtx.jface.text.ITextOperationTargetExtension; // packageimport -import dwtx.jface.text.IWidgetTokenOwner; // packageimport -import dwtx.jface.text.IViewportListener; // packageimport -import dwtx.jface.text.GapTextStore; // packageimport -import dwtx.jface.text.MarkSelection; // packageimport -import dwtx.jface.text.IDocumentPartitioningListenerExtension; // packageimport -import dwtx.jface.text.IDocumentAdapterExtension; // packageimport -import dwtx.jface.text.IInformationControlExtension; // packageimport -import dwtx.jface.text.IDocumentPartitioningListenerExtension2; // packageimport -import dwtx.jface.text.DefaultDocumentAdapter; // packageimport -import dwtx.jface.text.ITextViewerExtension3; // packageimport -import dwtx.jface.text.IInformationControlCreator; // packageimport -import dwtx.jface.text.TypedRegion; // packageimport -import dwtx.jface.text.ISynchronizable; // packageimport -import dwtx.jface.text.IMarkRegionTarget; // packageimport -import dwtx.jface.text.TextViewerUndoManager; // packageimport -import dwtx.jface.text.IRegion; // packageimport -import dwtx.jface.text.IInformationControlExtension2; // packageimport -import dwtx.jface.text.IDocumentExtension4; // packageimport -import dwtx.jface.text.IDocumentExtension2; // packageimport -import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport -import dwtx.jface.text.DefaultInformationControl; // packageimport -import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport -import dwtx.jface.text.DocumentClone; // packageimport -import dwtx.jface.text.DefaultUndoManager; // packageimport -import dwtx.jface.text.IFindReplaceTarget; // packageimport -import dwtx.jface.text.IAutoEditStrategy; // packageimport -import dwtx.jface.text.ILineTrackerExtension; // packageimport -import dwtx.jface.text.IUndoManagerExtension; // packageimport -import dwtx.jface.text.TextSelection; // packageimport -import dwtx.jface.text.DefaultAutoIndentStrategy; // packageimport -import dwtx.jface.text.IAutoIndentStrategy; // packageimport -import dwtx.jface.text.IPainter; // packageimport -import dwtx.jface.text.IInformationControl; // packageimport -import dwtx.jface.text.IInformationControlExtension3; // packageimport -import dwtx.jface.text.ITextViewerExtension6; // packageimport -import dwtx.jface.text.IInformationControlExtension4; // packageimport -import dwtx.jface.text.DefaultLineTracker; // packageimport -import dwtx.jface.text.IDocumentInformationMappingExtension; // packageimport -import dwtx.jface.text.IRepairableDocumentExtension; // packageimport -import dwtx.jface.text.ITextHover; // packageimport -import dwtx.jface.text.FindReplaceDocumentAdapter; // packageimport -import dwtx.jface.text.ILineTracker; // packageimport -import dwtx.jface.text.Line; // packageimport -import dwtx.jface.text.ITextViewerExtension; // packageimport -import dwtx.jface.text.IDocumentAdapter; // packageimport -import dwtx.jface.text.TextEvent; // packageimport -import dwtx.jface.text.BadLocationException; // packageimport -import dwtx.jface.text.AbstractDocument; // packageimport -import dwtx.jface.text.AbstractLineTracker; // packageimport -import dwtx.jface.text.TreeLineTracker; // packageimport -import dwtx.jface.text.ITextPresentationListener; // packageimport -import dwtx.jface.text.Region; // packageimport -import dwtx.jface.text.ITextViewer; // packageimport -import dwtx.jface.text.IDocumentInformationMapping; // packageimport -import dwtx.jface.text.MarginPainter; // packageimport -import dwtx.jface.text.IPaintPositionManager; // packageimport -import dwtx.jface.text.TextPresentation; // packageimport -import dwtx.jface.text.IFindReplaceTargetExtension; // packageimport -import dwtx.jface.text.ISlaveDocumentManagerExtension; // packageimport -import dwtx.jface.text.ISelectionValidator; // packageimport -import dwtx.jface.text.IDocumentExtension; // packageimport -import dwtx.jface.text.PropagatingFontFieldEditor; // packageimport -import dwtx.jface.text.ConfigurableLineTracker; // packageimport -import dwtx.jface.text.SlaveDocumentEvent; // packageimport -import dwtx.jface.text.IDocumentListener; // packageimport -import dwtx.jface.text.PaintManager; // packageimport -import dwtx.jface.text.IFindReplaceTargetExtension3; // packageimport -import dwtx.jface.text.ITextDoubleClickStrategy; // packageimport -import dwtx.jface.text.IDocumentExtension3; // packageimport -import dwtx.jface.text.Position; // packageimport -import dwtx.jface.text.TextMessages; // packageimport -import dwtx.jface.text.CopyOnWriteTextStore; // packageimport -import dwtx.jface.text.WhitespaceCharacterPainter; // packageimport -import dwtx.jface.text.IPositionUpdater; // packageimport -import dwtx.jface.text.DefaultTextDoubleClickStrategy; // packageimport -import dwtx.jface.text.ListLineTracker; // packageimport -import dwtx.jface.text.ITextInputListener; // packageimport -import dwtx.jface.text.BadPositionCategoryException; // packageimport -import dwtx.jface.text.IWidgetTokenKeeperExtension; // packageimport -import dwtx.jface.text.IInputChangedListener; // packageimport -import dwtx.jface.text.ITextOperationTarget; // packageimport -import dwtx.jface.text.IDocumentInformationMappingExtension2; // packageimport -import dwtx.jface.text.ITextViewerExtension7; // packageimport -import dwtx.jface.text.IInformationControlExtension5; // packageimport -import dwtx.jface.text.IDocumentRewriteSessionListener; // packageimport -import dwtx.jface.text.JFaceTextUtil; // packageimport -import dwtx.jface.text.AbstractReusableInformationControlCreator; // packageimport -import dwtx.jface.text.TabsToSpacesConverter; // packageimport -import dwtx.jface.text.CursorLinePainter; // packageimport -import dwtx.jface.text.ITextHoverExtension; // packageimport -import dwtx.jface.text.IEventConsumer; // packageimport -import dwtx.jface.text.IDocument; // packageimport -import dwtx.jface.text.IWidgetTokenKeeper; // packageimport -import dwtx.jface.text.DocumentCommand; // packageimport -import dwtx.jface.text.TypedPosition; // packageimport -import dwtx.jface.text.IEditingSupportRegistry; // packageimport -import dwtx.jface.text.IDocumentPartitionerExtension; // packageimport -import dwtx.jface.text.AbstractHoverInformationControlManager; // packageimport -import dwtx.jface.text.IEditingSupport; // packageimport -import dwtx.jface.text.IMarkSelection; // packageimport -import dwtx.jface.text.ISlaveDocumentManager; // packageimport -import dwtx.jface.text.DocumentEvent; // packageimport -import dwtx.jface.text.DocumentPartitioningChangedEvent; // packageimport -import dwtx.jface.text.ITextStore; // packageimport -import dwtx.jface.text.JFaceTextMessages; // packageimport -import dwtx.jface.text.DocumentRewriteSessionEvent; // packageimport -import dwtx.jface.text.SequentialRewriteTextStore; // packageimport -import dwtx.jface.text.TextAttribute; // packageimport -import dwtx.jface.text.ITextViewerExtension4; // packageimport -import dwtx.jface.text.ITypedRegion; // packageimport - - import dwt.dwthelper.utils; - /** * A document rewrite session type. * <p> @@ -176,29 +33,36 @@ */ public class DocumentRewriteSessionType { + static this(){ + UNRESTRICTED= new DocumentRewriteSessionType(); + UNRESTRICTED_SMALL= new DocumentRewriteSessionType(); + SEQUENTIAL= new DocumentRewriteSessionType(); + STRICTLY_SEQUENTIAL= new DocumentRewriteSessionType(); + } + /** * An unrestricted rewrite session is a sequence of unrestricted replace operations. This * session type should only be used for <em>large</em> operations that touch more than about * fifty lines. Use {@link #UNRESTRICTED_SMALL} for small operations. */ - public const static DocumentRewriteSessionType UNRESTRICTED= new DocumentRewriteSessionType(); + public const static DocumentRewriteSessionType UNRESTRICTED; /** * An small unrestricted rewrite session is a short sequence of unrestricted replace operations. * This should be used for changes that touch less than about fifty lines. - * + * * @since 3.3 */ - public const static DocumentRewriteSessionType UNRESTRICTED_SMALL= new DocumentRewriteSessionType(); + public const static DocumentRewriteSessionType UNRESTRICTED_SMALL; /** * A sequential rewrite session is a sequence of non-overlapping replace * operations starting at an arbitrary document offset. */ - public const static DocumentRewriteSessionType SEQUENTIAL= new DocumentRewriteSessionType(); + public const static DocumentRewriteSessionType SEQUENTIAL; /** * A strictly sequential rewrite session is a sequence of non-overlapping * replace operations from the start of the document to its end. */ - public const static DocumentRewriteSessionType STRICTLY_SEQUENTIAL= new DocumentRewriteSessionType(); + public const static DocumentRewriteSessionType STRICTLY_SEQUENTIAL; /**
--- a/dwtx/jface/text/FindReplaceDocumentAdapter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/FindReplaceDocumentAdapter.d Mon Sep 08 00:51:37 2008 +0200 @@ -63,7 +63,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -179,10 +178,51 @@ } // Find/replace operation codes. - private static const FindReplaceOperationCode FIND_FIRST= new FindReplaceOperationCode(); - private static const FindReplaceOperationCode FIND_NEXT= new FindReplaceOperationCode(); - private static const FindReplaceOperationCode REPLACE= new FindReplaceOperationCode(); - private static const FindReplaceOperationCode REPLACE_FIND_NEXT= new FindReplaceOperationCode(); + private static FindReplaceOperationCode FIND_FIRST_; + private static FindReplaceOperationCode FIND_FIRST(){ + if( FIND_FIRST_ is null ){ + synchronized( FindReplaceDocumentAdapter.classinfo ){ + if( FIND_FIRST_ is null ){ + FIND_FIRST_ = new FindReplaceOperationCode(); + } + } + } + return FIND_FIRST_; + } + + private static FindReplaceOperationCode FIND_NEXT_; + private static FindReplaceOperationCode FIND_NEXT(){ + if( FIND_NEXT_ is null ){ + synchronized( FindReplaceDocumentAdapter.classinfo ){ + if( FIND_NEXT_ is null ){ + FIND_NEXT_ = new FindReplaceOperationCode(); + } + } + } + return FIND_NEXT_; + } + private static FindReplaceOperationCode REPLACE_; + private static FindReplaceOperationCode REPLACE(){ + if( REPLACE_ is null ){ + synchronized( FindReplaceDocumentAdapter.classinfo ){ + if( REPLACE_ is null ){ + REPLACE_ = new FindReplaceOperationCode(); + } + } + } + return REPLACE_; + } + private static FindReplaceOperationCode REPLACE_FIND_NEXT_; + private static FindReplaceOperationCode REPLACE_FIND_NEXT(){ + if( REPLACE_FIND_NEXT_ is null ){ + synchronized( FindReplaceDocumentAdapter.classinfo ){ + if( REPLACE_FIND_NEXT_ is null ){ + REPLACE_FIND_NEXT_ = new FindReplaceOperationCode(); + } + } + } + return REPLACE_FIND_NEXT_; + } /** * Retain case mode constants. @@ -225,7 +265,7 @@ * @param document the adapted document */ public this(IDocument document) { - Assert.isNotNull(document); + Assert.isNotNull(cast(Object)document); fDocument= document; } @@ -291,7 +331,7 @@ if (operationCode is FIND_FIRST) { // Reset - if (findString is null || findString.length() is 0) + if (findString is null || findString.length is 0) return null; // Validate start offset @@ -309,7 +349,7 @@ patternFlags |= Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE; if (wholeWord) - findString= "\\b" + findString + "\\b"; //$NON-NLS-1$ //$NON-NLS-2$ + findString= "\\b" ~ findString ~ "\\b"; //$NON-NLS-1$ //$NON-NLS-2$ if (!regExSearch && !wholeWord) findString= asRegPattern(findString); @@ -339,12 +379,12 @@ Matcher replaceTextMatcher= pattern.matcher(prevMatch); replaceText= replaceTextMatcher.replaceFirst(replaceText); } catch (IndexOutOfBoundsException ex) { - throw new PatternSyntaxException(ex.getLocalizedMessage(), replaceText, -1); + throw new PatternSyntaxException(ex.msg/+getLocalizedMessage()+/, replaceText, -1); } } int offset= fFindReplaceMatcher.start(); - int length= fFindReplaceMatcher.group().length(); + int length= fFindReplaceMatcher.group().length; if (cast(IRepairableDocumentExtension)fDocument && (cast(IRepairableDocumentExtension)fDocument).isLineInformationRepairNeeded(offset, length, replaceText)) { @@ -355,7 +395,7 @@ fDocument.replace(offset, length, replaceText); if (operationCode is REPLACE) { - return new Region(offset, replaceText.length()); + return new Region(offset, replaceText.length); } } @@ -371,8 +411,8 @@ if (operationCode is REPLACE_FIND_NEXT) fFindReplaceState= FIND_NEXT; - if (found && fFindReplaceMatcher.group().length() > 0) - return new Region(fFindReplaceMatcher.start(), fFindReplaceMatcher.group().length()); + if (found && fFindReplaceMatcher.group().length > 0) + return new Region(fFindReplaceMatcher.start(), fFindReplaceMatcher.group().length); return null; } @@ -380,9 +420,9 @@ bool found= fFindReplaceMatcher.find(0); int index= -1; int length= -1; - while (found && fFindReplaceMatcher.start() + fFindReplaceMatcher.group().length() <= fFindReplaceMatchOffset + 1) { + while (found && fFindReplaceMatcher.start() + fFindReplaceMatcher.group().length <= fFindReplaceMatchOffset + 1) { index= fFindReplaceMatcher.start(); - length= fFindReplaceMatcher.group().length(); + length= fFindReplaceMatcher.group().length; found= fFindReplaceMatcher.find(index + 1); } fFindReplaceMatchOffset= index; @@ -406,14 +446,14 @@ * @since 3.4 */ private String substituteLinebreak(String findString) { - int length= findString.length(); + int length= findString.length; StringBuffer buf= new StringBuffer(length); int inCharGroup= 0; int inBraces= 0; bool inQuote= false; for (int i= 0; i < length; i++) { - char ch= findString.charAt(i); + char ch= .charAt(findString, i); switch (ch) { case '[': buf.append(ch); @@ -441,7 +481,7 @@ case '\\': if (i + 1 < length) { - char ch1= findString.charAt(i + 1); + char ch1= .charAt(findString, i + 1); if (inQuote) { if (ch1 is 'E') inQuote= false; @@ -485,16 +525,16 @@ * @param ch the character to process * @since 3.4 */ - private void interpretRetainCase(StringBuffer buf, char ch) { + private void interpretRetainCase(StringBuffer buf, dchar ch) { if (fRetainCaseMode is RC_UPPER) - buf.append(Character.toUpperCase(ch)); + buf.append(dcharToString(Character.toUpperCase(ch))); else if (fRetainCaseMode is RC_LOWER) - buf.append(Character.toLowerCase(ch)); + buf.append(dcharToString(Character.toLowerCase(ch))); else if (fRetainCaseMode is RC_FIRSTUPPER) { - buf.append(Character.toUpperCase(ch)); + buf.append(dcharToString(Character.toUpperCase(ch))); fRetainCaseMode= RC_MIXED; } else - buf.append(ch); + buf.append(dcharToString(ch)); } /** @@ -506,7 +546,7 @@ * @since 3.4 */ private String interpretReplaceEscapes(String replaceText, String foundText) { - int length= replaceText.length(); + int length= replaceText.length; bool inEscape= false; StringBuffer buf= new StringBuffer(length); @@ -516,7 +556,7 @@ fRetainCaseMode= RC_MIXED; for (int i= 0; i < length; i++) { - final char ch= replaceText.charAt(i); + char ch= .charAt(replaceText, i); if (inEscape) { i= interpretReplaceEscape(ch, i, buf, replaceText, foundText); inEscape= false; @@ -538,8 +578,8 @@ * \01 and $01 as $0\1, etc. */ if (i + 2 < length) { - char ch1= replaceText.charAt(i + 1); - char ch2= replaceText.charAt(i + 2); + char ch1= .charAt(replaceText, i + 1); + char ch2= .charAt(replaceText, i + 2); if (ch1 is '0' && '0' <= ch2 && ch2 <= '9') { buf.append("0\\"); //$NON-NLS-1$ i++; // consume the 0 @@ -570,7 +610,7 @@ * @since 3.4 */ private int interpretReplaceEscape(char ch, int i, StringBuffer buf, String replaceText, String foundText) { - int length= replaceText.length(); + int length= replaceText.length; switch (ch) { case 'r': buf.append('\r'); @@ -585,10 +625,10 @@ buf.append('\f'); break; case 'a': - buf.append('\u0007'); + buf.append("\u0007"c); break; case 'e': - buf.append('\u001B'); + buf.append("\u001B"c); break; case 'R': //see http://www.unicode.org/unicode/reports/tr18/#Line_Boundaries buf.append(TextUtilities.getDefaultLineDelimiter(fDocument)); @@ -604,7 +644,7 @@ * in interpretReplaceEscape(String) above. */ if (i + 1 < length) { - char ch1= replaceText.charAt(i + 1); + char ch1= .charAt(replaceText, i + 1); if ('0' <= ch1 && ch1 <= '9') { buf.append('\\'); } @@ -625,11 +665,11 @@ case 'c': if (i + 1 < length) { - char ch1= replaceText.charAt(i + 1); + char ch1= .charAt(replaceText, i + 1); interpretRetainCase(buf, cast(wchar)(ch1 ^ 64)); i++; } else { - String msg= TextMessages.getFormattedString("FindReplaceDocumentAdapter.illegalControlEscape", "\\c"); //$NON-NLS-1$ //$NON-NLS-2$ + String msg= TextMessages.getFormattedString("FindReplaceDocumentAdapter.illegalControlEscape", stringcast("\\c")); //$NON-NLS-1$ //$NON-NLS-2$ throw new PatternSyntaxException(msg, replaceText, i); } break; @@ -640,15 +680,15 @@ try { parsedInt= Integer.parseInt(replaceText.substring(i + 1, i + 3), 16); if (parsedInt < 0) - throw new NumberFormatException(); + throw new NumberFormatException(""); } catch (NumberFormatException e) { - String msg= TextMessages.getFormattedString("FindReplaceDocumentAdapter.illegalHexEscape", replaceText.substring(i - 1, i + 3)); //$NON-NLS-1$ + String msg= TextMessages.getFormattedString("FindReplaceDocumentAdapter.illegalHexEscape", stringcast(replaceText.substring(i - 1, i + 3))); //$NON-NLS-1$ throw new PatternSyntaxException(msg, replaceText, i); } interpretRetainCase(buf, cast(wchar) parsedInt); i+= 2; } else { - String msg= TextMessages.getFormattedString("FindReplaceDocumentAdapter.illegalHexEscape", replaceText.substring(i - 1, length)); //$NON-NLS-1$ + String msg= TextMessages.getFormattedString("FindReplaceDocumentAdapter.illegalHexEscape", stringcast(replaceText.substring(i - 1, length))); //$NON-NLS-1$ throw new PatternSyntaxException(msg, replaceText, i); } break; @@ -659,15 +699,15 @@ try { parsedInt= Integer.parseInt(replaceText.substring(i + 1, i + 5), 16); if (parsedInt < 0) - throw new NumberFormatException(); + throw new NumberFormatException(""); } catch (NumberFormatException e) { - String msg= TextMessages.getFormattedString("FindReplaceDocumentAdapter.illegalUnicodeEscape", replaceText.substring(i - 1, i + 5)); //$NON-NLS-1$ + String msg= TextMessages.getFormattedString("FindReplaceDocumentAdapter.illegalUnicodeEscape", stringcast(replaceText.substring(i - 1, i + 5))); //$NON-NLS-1$ throw new PatternSyntaxException(msg, replaceText, i); } interpretRetainCase(buf, cast(wchar) parsedInt); i+= 4; } else { - String msg= TextMessages.getFormattedString("FindReplaceDocumentAdapter.illegalUnicodeEscape", replaceText.substring(i - 1, length)); //$NON-NLS-1$ + String msg= TextMessages.getFormattedString("FindReplaceDocumentAdapter.illegalUnicodeEscape", stringcast(replaceText.substring(i - 1, length))); //$NON-NLS-1$ throw new PatternSyntaxException(msg, replaceText, i); } break; @@ -677,7 +717,7 @@ fRetainCaseMode= RC_UPPER; else if (foundText.toLowerCase().equals(foundText)) // is whole match lower-case? fRetainCaseMode= RC_LOWER; - else if(Character.isUpperCase(foundText.charAt(0))) // is first character upper-case? + else if(Character.isUpperCase(.charAt(foundText,0))) // is first character upper-case? fRetainCaseMode= RC_FIRSTUPPER; else fRetainCaseMode= RC_MIXED; @@ -699,11 +739,11 @@ * @return the string converted to a regex pattern */ private String asRegPattern(String string) { - StringBuffer out_= new StringBuffer(string.length()); + StringBuffer out_= new StringBuffer(string.length); bool quoting= false; - for (int i= 0, length= string.length(); i < length; i++) { - char ch= string.charAt(i); + for (int i= 0, length= string.length; i < length; i++) { + char ch= .charAt(string, i); if (ch is '\\') { if (quoting) { out_.append("\\E"); //$NON-NLS-1$ @@ -754,7 +794,7 @@ /* * @see java.lang.CharSequence#charAt(int) */ - public override wchar charAt(int index) { + public override char charAt(int index) { try { return fDocument.getChar(index); } catch (BadLocationException e) { @@ -767,7 +807,7 @@ */ public CharSequence subSequence(int start, int end) { try { - return fDocument.get(start, end - start); + return new StringCharSequence(fDocument.get(start, end - start)); } catch (BadLocationException e) { throw new IndexOutOfBoundsException(); }
--- a/dwtx/jface/text/GapTextStore.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/GapTextStore.d Mon Sep 08 00:51:37 2008 +0200 @@ -60,7 +60,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -202,7 +201,7 @@ private const float fSizeMultiplier; /** The store's content */ - private char[] fContent= new char[0]; + private char[] fContent; /** Starting index of the gap */ private int fGapStart= 0; /** End index of the gap */ @@ -298,16 +297,16 @@ */ public final String get(int offset, int length) { if (fGapStart <= offset) - return new String(fContent, offset + gapSize() , length); + return new_String(fContent, offset + gapSize() , length); final int end= offset + length; if (end <= fGapStart) - return new String(fContent, offset, length); + return new_String(fContent, offset, length); StringBuffer buf= new StringBuffer(length); - buf.append(fContent, offset, fGapStart - offset); - buf.append(fContent, fGapEnd, end - fGapStart); + buf.append(fContent[ offset .. fGapStart ]); + buf.append(fContent[ fGapEnd .. end - fGapStart + fGapEnd ]); return buf.toString(); } @@ -338,7 +337,7 @@ if (text is null) { adjustGap(offset, length, 0); } else { - int textLength= text.length(); + int textLength= text.length; adjustGap(offset, length, textLength); if (textLength !is 0) text.getChars(0, textLength, fContent, offset); @@ -361,7 +360,7 @@ final bool reuseArray= 0 <= newGapSize && newGapSize <= fThreshold; final int newGapStart= offset + add; - final int newGapEnd; + int newGapEnd; if (reuseArray) newGapEnd= moveGap(offset, remove, oldGapSize, newGapSize, newGapStart); @@ -512,7 +511,7 @@ * @return a copy of the content of this text store */ protected String getContentAsString() { - return new String(fContent); + return new_String(fContent); } /**
--- a/dwtx/jface/text/IDocumentExtension.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/IDocumentExtension.d Mon Sep 08 00:51:37 2008 +0200 @@ -101,7 +101,6 @@ import dwtx.jface.text.MarginPainter; // packageimport import dwtx.jface.text.IPaintPositionManager; // packageimport import dwtx.jface.text.TextPresentation; // packageimport -import dwtx.jface.text.IFindReplaceTargetExtension; // packageimport import dwtx.jface.text.ISlaveDocumentManagerExtension; // packageimport import dwtx.jface.text.ISelectionValidator; // packageimport import dwtx.jface.text.PropagatingFontFieldEditor; // packageimport
--- a/dwtx/jface/text/ITextOperationTarget.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/ITextOperationTarget.d Mon Sep 08 00:51:37 2008 +0200 @@ -179,64 +179,64 @@ /** * Text operation code for undoing the last edit command. */ - static const int UNDO= 1; + public static const int UNDO= 1; /** * Text operation code for redoing the last undone edit command. */ - static const int REDO= 2; + public static const int REDO= 2; /** * Text operation code for moving the selected text to the clipboard. */ - static const int CUT= 3; + public static const int CUT= 3; /** * Text operation code for copying the selected text to the clipboard. */ - static const int COPY= 4; + public static const int COPY= 4; /** * Text operation code for inserting the clipboard content at the * current position. */ - static const int PASTE= 5; + public static const int PASTE= 5; /** * Text operation code for deleting the selected text or if selection * is empty the character at the right of the current position. */ - static const int DELETE= 6; + public static const int DELETE= 6; /** * Text operation code for selecting the complete text. */ - static const int SELECT_ALL= 7; + public static const int SELECT_ALL= 7; /** * Text operation code for shifting the selected text block to the right. */ - static const int SHIFT_RIGHT= 8; + public static const int SHIFT_RIGHT= 8; /** * Text operation code for shifting the selected text block to the left. */ - static const int SHIFT_LEFT= 9; + public static const int SHIFT_LEFT= 9; /** * Text operation code for printing the complete text. */ - static const int PRINT= 10; + public static const int PRINT= 10; /** * Text operation code for prefixing the selected text block. */ - static const int PREFIX= 11; + public static const int PREFIX= 11; /** * Text operation code for removing the prefix from the selected text block. */ - static const int STRIP_PREFIX= 12; + public static const int STRIP_PREFIX= 12; /**
--- a/dwtx/jface/text/JFaceTextMessages.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/JFaceTextMessages.d Mon Sep 08 00:51:37 2008 +0200 @@ -176,7 +176,7 @@ try { return fgResourceBundle.getString(key); } catch (MissingResourceException e) { - return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$ + return "!" ~ key ~ "!";//$NON-NLS-2$ //$NON-NLS-1$ } } }
--- a/dwtx/jface/text/JFaceTextMessages.properties Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -############################################################################### -# Copyright (c) 2000, 2007 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 -############################################################################### - - -TextViewer.error.bad_location.WidgetCommand.setEvent= TextViewer.WidgetCommand.setEvent: BadLocationException -TextViewer.error.bad_location.findAndSelect= TextViewer.findAndSelect: BadLocationException -TextViewer.error.bad_location.getBottomIndex= TextViewer.getBottomIndex: BadLocationException -TextViewer.error.bad_location.getBottomIndexEndOffset= TextViewer.getBottomIndexEndOffset: BadLocationException -TextViewer.error.bad_location.getFirstCompleteLineOfRegion= TextViewer.getFirstCompleteLineOfRegion: BadLocationException -TextViewer.error.bad_location.getTopIndex= TextViewer.getTopIndex: BadLocationException -TextViewer.error.bad_location.getTopIndexStartOffset= TextViewer.getTopIndexStartOffset: BadLocationException -TextViewer.error.bad_location.selectContentTypePlugin= TextViewer.selectContentTypePlugin: BadLocationException -TextViewer.error.bad_location.setTopIndex_1= TextViewer.setTopIndex: BadLocationException -TextViewer.error.bad_location.setTopIndex_2= TextViewer.setTopIndex: BadLocationException -TextViewer.error.bad_location.shift_1= TextViewer.shift: BadLocationException -TextViewer.error.bad_location.shift_2= TextViewer.shift: BadLocationException -TextViewer.error.bad_location.verifyText= TextViewer.verifyText: BadLocationException -TextViewer.error.invalid_range= Invalid range argument -TextViewer.error.invalid_visible_region_1= Invalid visible region argument -TextViewer.error.invalid_visible_region_2= Invalid visible region argument - -AbstractHoverInformationControlManager.hover.restarter= Hover Restart Delay - -# The first parameter is the annotation type label and the second is the number of annotations -OverviewRulerHeader.toolTipTextEntry= {0}: {1} - -DefaultUndoManager.operationLabel= Typing -DefaultUndoManager.error.undoFailed.title= Undo Failed -DefaultUndoManager.error.redoFailed.title= Redo Failed - -DefaultAnnotationHover.multipleMarkers= Multiple markers at this line -# The parameter is the text of the list item -DefaultAnnotationHover.listItem= - {0} - -# The parameter is the line number -DefaultAnnotationHover.lineNumber=Line: {0} -
--- a/dwtx/jface/text/ListLineTracker.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/ListLineTracker.d Mon Sep 08 00:51:37 2008 +0200 @@ -177,7 +177,7 @@ abstract class ListLineTracker : ILineTracker { /** The line information */ - private const List fLines= new ArrayList(); + private const List fLines; /** The length of the tracked text */ private int fTextLength; @@ -185,6 +185,7 @@ * Creates a new line tracker. */ protected this() { + fLines= new ArrayList(); } /**
--- a/dwtx/jface/text/PaintManager.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/PaintManager.d Mon Sep 08 00:51:37 2008 +0200 @@ -243,7 +243,7 @@ * position category using its class name and its hash value. */ public this() { - fCategory= getClass().getName() + toHash(); + fCategory= this.classinfo.name ~ Integer.toString(toHash()); fPositionUpdater= new PaintPositionUpdater(fCategory); } @@ -314,7 +314,7 @@ /** The painters managed by this paint manager. */ - private List fPainters= new ArrayList(2); + private List fPainters; /** The position manager used by this paint manager */ private PositionManager fManager; /** The associated text viewer */ @@ -326,6 +326,7 @@ * @param textViewer the text viewer associated to this newly created paint manager */ public this(ITextViewer textViewer) { + fPainters= new ArrayList(2); fTextViewer= textViewer; } @@ -338,8 +339,8 @@ * @param painter the painter to be added */ public void addPainter(IPainter painter) { - if (!fPainters.contains(painter)) { - fPainters.add(painter); + if (!fPainters.contains(cast(Object)painter)) { + fPainters.add(cast(Object)painter); if (fPainters.size() is 1) install(); painter.setPositionManager(fManager); @@ -355,7 +356,7 @@ * @param painter the painter to be removed */ public void removePainter(IPainter painter) { - if (fPainters.remove(painter)) { + if (fPainters.remove(cast(Object)painter)) { painter.deactivate(true); painter.setPositionManager(null); }
--- a/dwtx/jface/text/Position.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/Position.d Mon Sep 08 00:51:37 2008 +0200 @@ -61,7 +61,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -244,12 +243,11 @@ /* * @see java.lang.Object#equals(java.lang.Object) */ - public bool equals(Object other) { - if ( cast(Position)other ) { - Position rp= cast(Position) other; + public override int opEquals(Object other) { + if ( auto rp = cast(Position)other ) { return (rp.offset is offset) && (rp.length is length); } - return super.equals(other); + return super.opEquals(other); } /**
--- a/dwtx/jface/text/RegExMessages.properties Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,535 +0,0 @@ -############################################################################### -# Copyright (c) 2008 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 -# Cagatay Calli <ccalli@gmail.com> - [find/replace] retain caps when replacing - https://bugs.eclipse.org/bugs/show_bug.cgi?id=28949 -# Cagatay Calli <ccalli@gmail.com> - [find/replace] define & fix behavior of retain caps with other escapes and text before \C - https://bugs.eclipse.org/bugs/show_bug.cgi?id=217061 -############################################################################### - -## Content Assist for regular expressions ## -# use \\\u0075 for a backslash-u -displayString_bs_bs= \\\\ - Backslash -additionalInfo_bs_bs= Backslash -displayString_bs_0= \\0nnn - Octal character code -additionalInfo_bs_0= Octal character code\n\nExamples:\n\\011 (tabulator)\n\\0112 (character J) -displayString_bs_x= \\xhh - Hex character code -additionalInfo_bs_x= Hexadecimal character code\n\nExamples:\n\\x09 (tabulator)\n\\x4A or \\x4a (character J) -displayString_bs_u= \\\u0075hhhh - Hex code for Unicode character -additionalInfo_bs_u= Hexadecimal code for Unicode character\n\nExamples:\n\\\u0075004A (character J)\n\\\u007503B2 (lowercase Greek letter beta: \u03B2) -displayString_bs_t= \\t - Tab -additionalInfo_bs_t= Tabulator (\\x09, decimal: 9) -displayString_bs_R= \\R - Line delimiter (platform independent) -additionalInfo_bs_R= Line delimiter (platform independent)\n\n\ -This pattern matches any form of line delimiter, i.e.\n\ -- Windows (\\r\\n)\n\ -- Unix (\\n)\n\ -- Mac OS 9 (\\r)\n\n\ -Note that this pattern does not work inside []. -displayString_bs_n= \\n - Newline -additionalInfo_bs_n= Newline (\\x0A, decimal: 10)\n\n\ -WARNING: \\n only finds newline characters. \ -This can lead to unexpected results when the actual document uses different line delimiters.\n\n\ -RECOMMENDATION: use \\R to find a line delimiter. -displayString_bs_r= \\r - CR -additionalInfo_bs_r= Carriage Return (\\x0D, decimal: 13)\n\n\ -WARNING: \\r only finds carriage return characters. \ -This can lead to unexpected results when the actual document uses different line delimiters.\n\n\ -RECOMMENDATION: use \\R to find a line delimiter. -displayString_bs_f= \\f - FF -additionalInfo_bs_f= Form Feed (\\x0C, decimal: 12) -displayString_bs_a= \\a - Beep -additionalInfo_bs_a= Beep, Bell, Alert (\\x07, decimal: 7) -displayString_bs_e= \\e - Esc -additionalInfo_bs_e= Escape (\\x1B, decimal: 27) -displayString_bs_c= \\cC - Control character -additionalInfo_bs_c= Control character for C\n\nExample:\n\\cC (Ctrl+C, \\x03, decimal: 3) - -displayString_dot= . - Any character -additionalInfo_dot= The dot matches any character except line terminators.\n\n\ -To make the dot match line terminators as well, \n\ -start the expression with the embedded flag expression \n\ -"(?s)" (without quotes). -displayString_bs_d= \\d - A digit -additionalInfo_bs_d= A digit: [0-9] -displayString_bs_D= \\D - Not a digit -additionalInfo_bs_D= Not a digit: [^0-9] -displayString_bs_s= \\s - A whitespace -additionalInfo_bs_s= A whitespace: [ \\t\\n\\x0B\\f\\r] -displayString_bs_S= \\S - Not a whitespace -additionalInfo_bs_S= Not a whitespace: [^\\s] -displayString_bs_w= \\w - An alphanumeric (word character) -additionalInfo_bs_w= An alphanumeric (a word character): [a-zA-Z_0-9] -displayString_bs_W= \\W - Not an alphanumeric -additionalInfo_bs_W= Not an alphanumeric (not a word character): [^\\w] - -displayString_start= ^ - Line start -additionalInfo_start= Line start (positional match)\n\nExample:\n\ -The expression "^Eclipse" matches the term "Eclipse"\n\ -only on the second line of text\n\ -"The Eclipse Project\n\ -Eclipse Platform". -displayString_end= $ - Line end -additionalInfo_end= Line end (positional match)\n\nExample:\n\ -The expression "Eclipse$" matches the term "Eclipse"\n\ -only on the second line of text\n\ -"- Install the Eclipse Platform\n\ -- Run Eclipse". -displayString_bs_b= \\b- Word beginning or end -additionalInfo_bs_b= Word beginning or end (positional match)\n\nExample:\n\ -The expression "s\\b" matches only the last "s" of "glasses" in text\n\ -"I lost my glasses." -displayString_bs_B= \\B - Not a word beginning or end -additionalInfo_bs_B= Not a word beginning or end (positional match)\n\nExample:\n\ -The expression "\\BS" matches only "S" of "printString" in text\n\ -"void print(String printString)". -displayString_bs_A= \\A - Start of input -additionalInfo_bs_A= Start of input (positional match)\n\nExample:\n\ -The expression "\\ABC" matches only "BC" of "BCD" in text\n\ -"BCD ABC\n\ -BCDEF". -displayString_bs_G= \\G - Previous match's end -additionalInfo_bs_G= Previous match's end (positional match)\n\nExample:\n\ -The expression "\\Ga" matches the first and then the second "a" in text\n\ -"aardvark" (when starting from the beginning). -displayString_bs_Z= \\Z - End of input, does not consider last line terminator -additionalInfo_bs_Z= End of input, does not consider last line terminator (positional match)\n\n\ -The expression matches at the end of the file, except for when the\n\ -file ends in a line terminator, in which case it matches before that\n\ -line terminator.\n\nExample:\n\ -The expression "ing\\Z" matches "ing" in text\n\ -"testing", as well as in text\n\ -"testing\n\ -", but doesn't match in text\n\ -"testing\n\ -\n\ -" -displayString_bs_z= \\z - End of input -additionalInfo_bs_z= End of input (positional match)\n\nExample:\n\ -The expression "ing\\z" matches "ing" in text\n\ -"testing", but doesn't match in text\n\ -"testing\n\ -" - -### repetition quantifiers ### -displayString_quest= ? - Greedy match 0 or 1 times -additionalInfo_quest= Greedy match 0 or 1 times.\n\n\ -First tries to match the preceding token.\n\ -Falls back to not matching if this choice made a full match impossible.\n\nExample:\n\ -The expression "fo?" matches "f", "fo", and "fo" in text\n\ -"f fo foo". -displayString_star= * - Greedy match 0 or more times -additionalInfo_star= Greedy match 0 or more times.\n\n\ -First tries to match the preceding token as many times as possible.\n\ -Falls back to matching it less often if this choice made a full match impossible.\n\nExamples:\n\ -- The expression "fo*" matches "f", "fo", and "foo" in text\n\ -"f fo foo".\n\ -- The expression "fo*o\\d" matches all three words in text\n\ -"fo1 foo2 fooo3".\n\ -- The expression "<.*>" matches the whole text\n\ -"<p><b>bold</b>". -displayString_plus= + - Greedy match 1 or more times -additionalInfo_plus= Greedy match 1 or more times\n\n\ -First tries to match the preceding token as many times as possible.\n\ -Falls back to matching it less often if this choice made a full match impossible.\n\nExamples:\n\ -- The expression "fo+" matches "fo" and "foo" in text\n\ -"f fo foo".\n\ -- The expression "fo+o\\d" matches "foo2" and "fooo3" in text\n\ -"fo1 foo2 fooo3".\n\ -- The expression "<.+>" matches the whole text\n\ -"<p><b>bold</b>", but does not match anywhere in "<>". -displayString_exact= {n} - Greedy match exactly n times -additionalInfo_exact= Greedy match exactly n times.\n\nExamples:\n\ -- The expression "\\\\0[0-3][0-7]{2}" matches all three-digit octal character tokens.\n\ -- The expression "\\b\\w{4}\\b" matches all four-letter-words\n\ -such as "Java", "cool", or "food" (but not "dog"). -displayString_least= {n,} - Greedy match >= n times -additionalInfo_least= Greedy match >= n times.\n\n\ -First tries to match the preceding token as many times as possible.\n\ -Falls back to matching it less often (but at least n times),\n\ -if this choice made a full match impossible.\n\nExamples:\n\ -- The expression "fo{2,}" matches "foo" and "fooo" in text\n\ -"f fo foo fooo".\n\ -- The expression "fo{2,}o\\d" matches "fooo3" and "foooo4" in text\n\ -"fo1 foo2 fooo3 foooo4".\n\ -- The expression "10{3,}[^0]" matches all powers of ten that are larger than one thousand.\n\n\ -Note: The expressions "{0,}" and "*" are equivalent;\n\ -likewise, "{1,}" is equivalent to "+". -displayString_count= {n,m} - Greedy match >= n times but <= m times -additionalInfo_count= Greedy match >= n times but <= m times.\n\n\ -First tries to match the preceding token m times.\n\ -Falls back to matching it less often (but at least n times),\n\ -if this choice made a full match impossible.\n\nExamples:\n\ -- The expression "fo{1,2}" matches "fo", "foo", and "foo" in text\n\ -"f fo foo fooo".\n\ -- The expression "fo{1,2}o\\d" matches "foo2" and "fooo3" in text\n\ -"fo1 foo2 fooo3 foooo4".\n\ -- The expression "^.{70,80}$" matches all the lines that contain\n\ -between 70 and 80 characters (inclusive). - -displayString_questLazy= ?? - Lazy match 0 or 1 times -additionalInfo_questLazy= Lazy match 0 or 1 times.\n\n\ -First tries to not match the preceding token.\n\ -Falls back to matching it if this choice made a full match impossible.\n\nExample:\n\ -The expression "fo??" matches "f", "f", and "f" in text\n\ -"f fo foo". -displayString_starLazy= *? - Lazy match 0 or more times -additionalInfo_starLazy= Lazy match 0 or more times.\n\n\ -First tries to not match the preceding token.\n\ -Falls back to matching it more often if this choice made a full match impossible.\n\nExamples:\n\ -- The expression "fo*?" matches "f", "f", and "f" in text\n\ -"f fo foo".\n\ -- The expression "fo*?o\\d" matches all three words in text\n\ -"fo1 foo2 fooo3".\n\ -- The expression "<.*?>" matches "<p>", "<b>", and "</b>" in text\n\ -"<p><b>bold</b>". Note: a more performant expression for finding\n\ -xml tags is "<[^>]*>", which avoids backtracking. -displayString_plusLazy= +? - Lazy match 1 or more times -additionalInfo_plusLazy= Lazy match 1 or more times\n\n\ -First tries to match the preceding token once.\n\ -Falls back to matching it more often if this choice made a full match impossible.\n\nExamples:\n\ -- The expression "fo+?" matches "fo" and "fo" in text\n\ -"f fo foo".\n\ -- The expression "fo+?o\\d" matches "foo2" and "fooo3" in text\n\ -"fo1 foo2 fooo3".\n\ -- The expression "<.+?>" matches "<p>", "<b>", and "</b>" in text\n\ -"<p><b>bold</b>". Note: a more performant expression for finding\n\ -xml tags is "<[^>]*>", which avoids backtracking. -displayString_exactLazy= {n}? - Lazy match exactly n times -additionalInfo_exactLazy= Lazy match exactly n times.\n\n\ -This expression is equivalent to the expression\n\ -{n} - Greedy match exactly n times. -displayString_leastLazy= {n,}? - Lazy match >= n times -additionalInfo_leastLazy= Lazy match >= n times.\n\n\ -First tries to match the preceding token n times. Falls back to\n\ -matching it more often, if this choice made a full match impossible.\n\nExamples:\n\ -- The expression "fo{2,}?" matches "foo" and "foo" in text\n\ -"f fo foo fooo".\n\ -- The expression "fo{2,}?o\\d" matches "fooo3" and "foooo4" in text\n\ -"fo1 foo2 fooo3 foooo4".\n\ -- The expression "10{3,}?[^0]" matches all powers of ten that are larger than one thousand.\n\n\ -Note: The expressions "{0,}?" and "*?" are equivalent;\n\ -likewise, "{1,}?" is equivalent to "+?". -displayString_countLazy= {n,m}? - Lazy match >= n times but <= m times -additionalInfo_countLazy= Lazy match >= n times but <= m times.\n\n\ -First tries to match the preceding token n times.\n\ -Falls back to matching it more often (but at most m times),\n\ -if this choice made a full match impossible.\n\nExamples:\n\ -- The expression "fo{1,2}?" matches "fo", "fo", and "fo" in text\n\ -"f fo foo fooo".\n\ -- The expression "fo{1,2}?o\\d" matches "foo2" and "fooo3" in text\n\ -"fo1 foo2 fooo3 foooo4".\n\ - -displayString_questPoss= ?+ - Possessive match 0 or 1 times (no backtracking) -additionalInfo_questPoss= Possessive match 0 or 1 times.\n\n\ -Matches the preceding token if possible. Never backtracks,\n\ -even if this choice renders a full match impossible.\n\nExample:\n\ -The expression "fo?+o\\d" matches the first, but not the second line in text\n\ -"foo1\n\ -fo1". -displayString_starPoss= *+ Possessive match 0 or more times (no backtracking) -additionalInfo_starPoss= Possessive match 0 or more times.\n\n\ -Tries to match the preceding token as many times as possible. Never backtracks,\n\ -even if this choice renders a full match impossible.\n\nExamples:\n\ -- The expression "fo*+" matches "f", "fo" and "foo" in text\n\ -"f fo foo".\n\ -- The expression "fo*+o\\d" matches nowhere in text\n\ -"fo1 foo2 fooo3".\n\ -- The expression "<.*+>" matches nowhere in text\n\ -"<p><b>bold</b>". -displayString_plusPoss= ++ - Possessive match 1 or more times (no backtracking) -additionalInfo_plusPoss= Possessive match 1 or more times.\n\n\ -Tries to match the preceding token as many times as possible. Never backtracks,\n\ -even if this choice renders a full match impossible.\n\nExamples:\n\ -- The expression "fo++" matches "fo" and "foo" in text\n\ -"f fo foo".\n\ -- The expression "fo++o\\d" matches nowhere in text\n\ -"fo1 foo2 fooo3".\n\ -- The expression "<.++>" matches nowhere in text\n\ -"<p><b>bold</b>". - -displayString_exactPoss= {n}+ - Possessive match exactly n times (no backtracking) -additionalInfo_exactPoss= Possessive match exactly n times.\n\n\ -This expression is equivalent to the expression\n\ -{n} - Greedy match exactly n times. -displayString_leastPoss= {n,}+ - Possessive match >= n times (no backtracking) -additionalInfo_leastPoss= Possessive match >= n times.\n\n\ -Tries to match the preceding token as many times as possible, but at least n times.\n\ -Never backtracks, even if this choice renders a full match impossible.\n\nExamples:\n\ -- The expression "fo{2,}+" matches "foo" and "fooo" in text\n\ -"f fo foo fooo".\n\ -- The expression "fo{2,}?o\\d" matches nowhere in text\n\ -"fo1 foo2 fooo3 foooo4".\n\ -Note: The expressions "{0,}?" and "*?" are equivalent;\n\ -likewise, "{1,}?" is equivalent to "+?". - -displayString_countPoss= {n,m}+ - Possessive match >= n times but <= m times (no backtracking) -additionalInfo_countPoss= Possessive match >= n times but <= m times.\n\n\ -Tries to match the preceding token as many times as possible, \n\ -at least n times and at most m times.\n\ -Never backtracks, even if this choice renders a full match impossible.\n\nExamples:\n\ -- The expression "fo{1,2}+" matches "fo", "foo", and "foo" in text\n\ -"f fo foo fooo".\n\ -- The expression "fo{1,2}+o\\d" matches only "fooo3" in text\n\ -"fo1 foo2 fooo3 foooo4".\n\ -- The expression "^.{70,80}+$" matches all the lines that contain\n\ -between 70 and 80 characters (inclusive). - -displayString_alt= U|V - Alternation: U or V -additionalInfo_alt= Alternation.\n\n\ -First tries to match subexpression U. Falls back and tries to match V if U didn't match.\n\nExamples:\n\ -- The expression "A|B" applied to text "BA" first matches "B", then "A".\n\ -- The expression "AB|BC|CD" applied to text "ABC BC DAB" matches, in sequence:\n\ -"AB" in the first word, the second word "BC", "AB" at the very end. -displayString_group= (Expr) - Mark Expr as capturing group -additionalInfo_group= Mark Expr as capturing group.\n\n\ -Capturing groups are numbered by counting their opening parentheses from left to right.\n\ -In the expression "((A)(B(C)))", for example, there are four such groups:\n\ -1 ((A)(B(C)))\n\ -2 (A)\n\ -3 (B(C))\n\ -4 (C)\n\ -\n\ -Group zero always stands for the entire expression. During a match,\n\ -each subsequence of the input sequence that matches such a group is saved.\n\ -The captured subsequence i may be used later in the expression, via a back reference "\\i",\n\ -and may also be used in the replace string via "$i".\n\ -\n\ -Note: Groups beginning with (? are pure, non-capturing groups that\n\ -do not capture text and do not count towards the group total. - -displayString_bs_i= \\i - Match of the capturing group i -additionalInfo_bs_i= Match of the capturing group i.\n\n\ -\\i matches the subsequence that has already been saved as capturing group i.\n\ -\\0 is not a valid group number in the regular expression.\n\nExample:\n\ -The expression "(\\d+)\\+\\1" matches "10+10" in text "9+10+10+11".\n\ -\n\ -Note: in the replace string, $i stands for the capturing group i. - -displayString_bs= \\ - Quote next character -additionalInfo_bs= Quote next character\n\nExample:\n\ -The expression "\\{\\n\\}" matches the text "{n}". - -displayString_bs_Q= \\Q - Start quoting -additionalInfo_bs_Q= Start quoting\n\n\ -All characters between \\Q and the next \\E are taken literally and are not interpreted.\n\nExample:\n\ -The expression "\\Qnew int[] {42}\\E;" matches text "new int[] {42}". -displayString_bs_E= \\E - End quoting -additionalInfo_bs_E= End quoting\n\n\ -All characters between \\Q and the next \\E are taken literally and are not interpreted.\n\nExample:\n\ -The expression "\\Qnew int[] {42}\\E;" matches text "new int[] {42}". - -displayString_set= [ecl] - Character set -additionalInfo_set= Character set\n\n\ -Matches a single character out of the set.\n\nExample:\n\ -The expression "[ecl]" matches "c" and "l" in text "cold". -displayString_setExcl= [^ecl] - Excluded character set -additionalInfo_setExcl= Excluded character set\n\n\ -Matches a single character that is not one of the excluded characters.\n\nExamples:\n\ -The expression "[^ecl]" matches "o" and "d" in text "cold".\n\ -The expression "[a-z&&[^ecl]]" matches any character from a to z, excluding e, c, and l. -displayString_setRange= [c-l] - Character range -additionalInfo_setRange= Character range\n\n\ -Matches a single character out of the range from 'c' to 'l'.\n\nExamples:\n\ -The expression "[c-l]" matches "c", "l", and "d" in text "cold".\n\ -The expression "[a-z&&[^ecl]]" matches any character from a to z, excluding e, c, and l. -displayString_setInter= && - Intersection of character sets -additionalInfo_setInter= Intersection of character sets\n\n\ -Matches a character that is in both of the given sets.\n\nExample:\n\ -The expression "[a-z&&[^ecl]]" matches any character from a to z, excluding e, c, and l. - -displayString_posix= \\p{Class} - POSIX or Unicode character class -additionalInfo_posix= POSIX or Unicode character class\n\n\ -Matches a character from the given character class 'Class'.\n\ -Valid classes are:\n\ -\n\ -- POSIX character classes (US-ASCII only):\n\ -\ Lower, Upper, ASCII, Alpha, Digit, Alnum, Punct,\n\ -\ Graph, Print, Blank, Cntrl, XDigit, and Space.\n\ -\n\ -- Unicode blocks (with the prefix 'In'), e.g.:\n\ -\ InBasicLatin\n\ -\ InLatin-1Supplement\n\ -\ InGreek\n\ -\n\ -- Unicode categories, e.g.:\n\ -\ Lu: Uppercase Letter\n\ -\ Ll: Lowercase Letter\n\ -\ L: Letter\n\ -\ N: Number\n\ -\ Z: Separator\n\ -\ LD: Letter or Digit\n\ -\ L1: Latin-1 - -displayString_posixNot= \\P{Class} - Excluded POSIX or Unicode character class -additionalInfo_posixNot= Excluded POSIX or Unicode character class\n\n\ -Negation of character set \\p{Class}. Example:\n\ -\\P{ASCII} is equivalent to [^\\p{ASCII}] and matches all non-ASCII characters.\n\n\ -Valid classes are:\n\ -\n\ -- POSIX character classes (US-ASCII only):\n\ -\ Lower, Upper, ASCII, Alpha, Digit, Alnum, Punct,\n\ -\ Graph, Print, Blank, Cntrl, XDigit, and Space.\n\ -\n\ -- Unicode blocks (with the prefix 'In'), e.g.:\n\ -\ InBasicLatin\n\ -\ InLatin-1Supplement\n\ -\ InGreek\n\ -\n\ -- Unicode categories, e.g.:\n\ -\ Lu: Uppercase Letter\n\ -\ Ll: Lowercase Letter\n\ -\ L: Letter\n\ -\ N: Number\n\ -\ Z: Separator\n\ -\ LD: Letter or Digit\n\ -\ L1: Latin-1 - - -#Flags: -displayString_flag= (?ismd-ismd) - Turn flags on or off -additionalInfo_flag= Turn flags on and off for the rest of the matching process.\n\n\ -Flags before the dash are turned on; those after the dash are turned off.\n\ -The following flags are supported:\n\ -- i: case-insensitive matching\n\ -\n\ -- s: single-line, or dotall matching mode:\n\ -\ The expression . matches any character, including a line terminator.\n\ -\n\ -- m: multiline matching mode:\n\ -\ The expressions ^ and $ match just after or just before,\n\ -\ respectively, a line terminator or the end of the input sequence.\n\ -\ When multiline matching is turned off, these expressions only\n\ -\ match at the beginning and the end of the entire input sequence.\n\ -\ This flag is ON by default.\n\ -\n\ -- d: Unix lines matching mode:\n\ -\ Only the '\\n' line terminator\n\ -\ is recognized in the behavior of ., ^, and $ -# - u: unicode-aware case folding:\n\ -# Case-insensitive matching, when enabled, is done in a manner consistent\n\ -# with the Unicode Standard. By default, case-insensitive matching\n\ -# assumes that only characters in the US-ASCII charset are being matched. -# - c: canonical equivalence\n\ -# Two characters will be considered to match if, and only if, their full\n\ -# canonical decompositions match. The expression "a\\\u0075030A", for example,\n\ -# will match the string "a\u030A" when this flag is specified.\n\ -# By default, matching does not take canonical equivalence into account. -# - x: comments mode\n\ -# Whitespace is ignored, and embedded comments starting with\n\ -# # are ignored until the end of a line.\n\ - -displayString_flagExpr= (?ismd-ismd:Expr) - Turn flags on or off in Expr -additionalInfo_flagExpr= Turn flags on and off in Expr.\n\n\ -Flags before the dash are turned on; those after the dash are turned off.\n\ -The following flags are supported:\n\ -- i: case-insensitive matching\n\ -\n\ -- s: single-line, or dotall matching mode:\n\ -\ The expression . matches any character, including a line terminator.\n\ -\n\ -- m: multiline matching mode:\n\ -\ The expressions ^ and $ match just after or just before,\n\ -\ respectively, a line terminator or the end of the input sequence.\n\ -\ When multiline matching is turned off, these expressions only\n\ -\ match at the beginning and the end of the entire input sequence.\n\ -\ This flag is ON by default.\n\ -\n\ -- d: Unix lines matching mode:\n\ -\ Only the '\\n' line terminator\n\ -\ is recognized in the behavior of ., ^, and $ - - -#Noncapturing groups: -displayString_nonCap= (?:Expr) - Non-capturing group -additionalInfo_nonCap= Non-capturing group of regular expression Expr.\n\n\ -The group is not saved in a back reference.\n\nExample:\n\ -The expression "(?:\\w+) (\\d+)" matches "bug 42" in text "It's bug 42.".\n\ -A back reference "$1" in the replace string will be replaced by "42". - -displayString_atomicCap= (?>Expr) - Non-capturing atomic group -additionalInfo_atomicCap= Non-capturing atomic group of regular expression Expr.\n\n\ -Matches the regular expression Expr once, but does not backtrack into the expression\n\ -again if the first match did not prove to be successful later on.\n\ -The group is not saved in a back reference. - -#Lookaround: -displayString_posLookahead= (?=Expr) - Zero-width positive lookahead -additionalInfo_posLookahead= Expr, via zero-width positive lookahead.\n\n\ -Matches a position (zero-width: does not consume the matched characters),\n\ -where the next characters (-> lookahead)\n\ -do match (-> positive) the embedded expression Expr.\n\nExamples:\n\ -- The expression "var(?==)" matches only the first "var" in text "var=17; other=var;".\n\ -- The expression "\\b(?=\\w{7}\\b)\\w*clip\\w*\\b" matches any\n\ -seven-letter-word that contains "clip". It matches "Eclipse", but not "paperclip". - -displayString_negLookahead= (?!Expr) - Zero-width negative lookahead -additionalInfo_negLookahead= Expr, via zero-width negative lookahead.\n\n\ -Matches a position (zero-width: does not consume the matched characters),\n\ -where the next characters (-> lookahead)\n\ -do not match (-> negative) the embedded expression Expr.\n\nExamples:\n\ -- The expression "var(?!=)" matches only the second "var" in text "var=17; other=var;".\n\ -- The expression "\\b(?!\\w{5,7}\\b)\\w*clip\\w*\\b" matches any\n\ -word that contains "clip" and consists of less than 5 or more than 7 characters.\n\ -It matches "clip" and "paperclip", but not "Eclipse". - -displayString_posLookbehind= (?<=Expr) - Zero-width positive lookbehind -additionalInfo_posLookbehind= Expr, via zero-width positive lookbehind.\n\n\ -Matches a position (zero-width: does not consume the matched characters),\n\ -where the previous characters (-> lookbehind)\n\ -do match (-> positive) the embedded expression Expr.\n\nExample:\n\ -- The expression "\\w{5,}+(?<=as)\\b" matches "alias" and "bananas",\n\ -but does not match "peas", "apples", or "Alaska". - -displayString_negLookbehind= (?<!Expr) - Zero-width negative lookbehind -additionalInfo_negLookbehind= Expr, via zero-width negative lookbehind.\n\n\ -Matches a position (zero-width: does not consume the matched characters),\n\ -where the previous characters (-> lookbehind)\n\ -do not match (-> negative) the embedded expression Expr.\n\nExample:\n\ -- The expression "\\w{5,}+(?<!as)\\b" matches "Eclipse" and "apples",\n\ -but does not match "peas" or "bananas". - -#Replace string: -displayString_dollar= $i - Match of the capturing group i -additionalInfo_dollar= Match of the capturing group i.\n\n\ -$i is the string that has been saved as capturing group i.\n\ -$0 is the subsequence matched by the entire expression.\n\ -\n\ -Note: in the find expression, \\i stands for the capturing group i. -displayString_replace_cap= \\i - Match of the capturing group i -additionalInfo_replace_cap= Match of the capturing group i.\n\n\ -\\i is the string that has been saved as capturing group i.\n\ -\\0 is the subsequence matched by the entire expression.\n\ -\n\ -Note: \\i is equivalent to $i -displayString_replace_bs= \\ - Quote next character -additionalInfo_replace_bs= Quote next character\n\nExamples:\n\ -"\\$" will be replaced by "$".\n\ -"\\q" will be replaced by "q".\n\ -"\\\\" will be replaced by "\\". -displayString_replace_bs_n= \\n - Newline -additionalInfo_replace_bs_n= Newline (\\x0A, decimal: 10)\n\n\ -Note that \\n always inserts the newline character,\n\ -even if the document uses different line delimiters.\n\n\ -To insert the document line delimiter, use \\R. -displayString_replace_bs_r= \\r - CR -additionalInfo_replace_bs_r= Carriage Return (\\x0D, decimal: 13)\n\n\ -Note that \\r always inserts the carriage return character,\n\ -even if the document uses different line delimiters.\n\n\ -To insert the document line delimiter, use \\R. -displayString_replace_bs_R= \\R - Line delimiter -additionalInfo_replace_bs_R= Line delimiter\n\n\ -Inserts the default line delimiter of the document. -displayString_replace_bs_C=\\C - Retain case -additionalInfo_replace_bs_C=\\C - Retain casing of match (all lower case, all upper case, capitalized)\n\ -when replacing expression after \\C.\n\nExamples:\n\ -Find: "foo" Replace: "my\\Cbar\\CFar"\n\ -"foo" will be replaced by "mybarfar".\n\ -"FOO" will be replaced by "myBARFAR".\n\ -"Foo" will be replaced by "myBarFar".\n\n\ -Note that the content of a group ($i, \\i) is currently inserted unmodified. -
--- a/dwtx/jface/text/Region.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/Region.d Mon Sep 08 00:51:37 2008 +0200 @@ -155,6 +155,7 @@ import dwt.dwthelper.utils; +import tango.text.convert.Format; /** @@ -209,11 +210,11 @@ public override hash_t toHash() { return (fOffset << 24) | (fLength << 16); } - + /* * @see java.lang.Object#toString() */ public override String toString() { - return "[" + fOffset + '+' + fLength + ']'; //$NON-NLS-1$ + return Format("[{}+{}]", fOffset, fLength ); //$NON-NLS-1$ } }
--- a/dwtx/jface/text/SequentialRewriteTextStore.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/SequentialRewriteTextStore.d Mon Sep 08 00:51:37 2008 +0200 @@ -233,7 +233,7 @@ // backward if (offset + length <= firstReplace.newOffset) { - int delta= text.length() - length; + int delta= text.length - length; if (delta !is 0) { for (Iterator i= fReplaceList.iterator(); i.hasNext(); ) { Replace replace= cast(Replace) i.next(); @@ -244,12 +244,12 @@ fReplaceList.addFirst(new Replace(offset, offset, length, text)); // forward - } else if (offset >= lastReplace.newOffset + lastReplace.text.length()) { + } else if (offset >= lastReplace.newOffset + lastReplace.text.length) { int delta= getDelta(lastReplace); fReplaceList.add(new Replace(offset - delta, offset, length, text)); } else if (ASSERT_SEQUENTIALITY) { - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); } else { commit(); @@ -283,12 +283,12 @@ return fSource.get(offset, length); // after - } else if (offset >= lastReplace.newOffset + lastReplace.text.length()) { + } else if (offset >= lastReplace.newOffset + lastReplace.text.length) { int delta= getDelta(lastReplace); return fSource.get(offset - delta, length); } else if (ASSERT_SEQUENTIALITY) { - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); } else { @@ -299,10 +299,10 @@ if (offset + length < replace.newOffset) { return fSource.get(offset - delta, length); - } else if (offset >= replace.newOffset && offset + length <= replace.newOffset + replace.text.length()) { + } else if (offset >= replace.newOffset && offset + length <= replace.newOffset + replace.text.length) { return replace.text.substring(offset - replace.newOffset, offset - replace.newOffset + length); - } else if (offset >= replace.newOffset + replace.text.length()) { + } else if (offset >= replace.newOffset + replace.text.length) { delta= getDelta(replace); continue; @@ -348,7 +348,7 @@ return fSource.get(offset - delta); } else if (ASSERT_SEQUENTIALITY) { - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); } else {
--- a/dwtx/jface/text/TextAttribute.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/TextAttribute.d Mon Sep 08 00:51:37 2008 +0200 @@ -193,7 +193,7 @@ /** The text style */ private int style; - + /** * The text font. * @since 3.3 @@ -218,7 +218,7 @@ this.background= background; this.style= style; } - + /** * Creates a text attribute with the given colors and style. * @@ -256,7 +256,7 @@ if (!( cast(TextAttribute)object )) return false; TextAttribute a= cast(TextAttribute)object; - + return (a.style is style && equals(a.foreground, foreground) && equals(a.background, background) && equals(a.font, font)); } @@ -270,7 +270,7 @@ */ private bool equals(Object o1, Object o2) { if (o1 !is null) - return o1.equals(o2); + return cast(bool) o1.opEquals(o2); return (o2 is null); } @@ -315,7 +315,7 @@ public int getStyle() { return style; } - + /** * Returns the attribute's font. *
--- a/dwtx/jface/text/TextEvent.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/TextEvent.d Mon Sep 08 00:51:37 2008 +0200 @@ -204,7 +204,7 @@ * @param event the associated document event or <code>null</code> if none * @param viewerRedrawState the redraw state of the viewer */ - protected this(int offset, int length, String text, String replacedText, DocumentEvent event, bool viewerRedrawState) { + /+protected+/ this(int offset, int length, String text, String replacedText, DocumentEvent event, bool viewerRedrawState) { fOffset= offset; fLength= length; fText= text;
--- a/dwtx/jface/text/TextMessages.properties Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -############################################################################### -# Copyright (c) 2008 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 -############################################################################### - -FindReplaceDocumentAdapter.illegalControlEscape= Illegal control escape sequence {0} -FindReplaceDocumentAdapter.illegalHexEscape= Illegal hexadecimal escape sequence {0} -FindReplaceDocumentAdapter.illegalLinebreak=Illegal position for \\R -FindReplaceDocumentAdapter.illegalUnicodeEscape= Illegal Unicode escape sequence {0} -FindReplaceDocumentAdapter.incompatibleLineDelimiter= Incompatible line delimiter
--- a/dwtx/jface/text/TextPresentation.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/TextPresentation.d Mon Sep 08 00:51:37 2008 +0200 @@ -61,7 +61,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -155,6 +154,7 @@ import dwt.dwthelper.utils; import dwtx.dwtxhelper.Collection; +import tango.core.Exception; import dwt.DWT; import dwt.custom.StyleRange; @@ -239,7 +239,7 @@ StyleRange r= cast(StyleRange) fRanges.get(fIndex++); return createWindowRelativeRange(fWindow, r); } catch (ArrayIndexOutOfBoundsException x) { - throw new NoSuchElementException(); + throw new NoSuchElementException(null); } finally { if (fSkipDefaults) computeIndex(); @@ -321,7 +321,7 @@ */ public this(IRegion extent, int sizeHint) { this(sizeHint); - Assert.isNotNull(extent); + Assert.isNotNull(cast(Object)extent); fExtent= extent; } @@ -630,7 +630,7 @@ private void checkConsistency(StyleRange range) { if (range is null) - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); if (fDefaultRange !is null) {
--- a/dwtx/jface/text/TextSelection.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/TextSelection.d Mon Sep 08 00:51:37 2008 +0200 @@ -167,7 +167,17 @@ public class TextSelection : ITextSelection { /** Internal empty text selection */ - private const static ITextSelection NULL= new TextSelection(); + private static ITextSelection NULL_; + private static ITextSelection NULL(){ + if( NULL_ is null ){ + synchronized( TextSelection.classinfo ){ + if( NULL_ is null ){ + NULL_= new TextSelection(); + } + } + } + return NULL_; + } /** * Returns a shared instance of an empty text selection. @@ -295,11 +305,11 @@ /* * @see java.lang.Object#equals(Object) */ - public bool equals(Object obj) { + public override int opEquals(Object obj) { if (obj is this) return true; - if (obj is null || getClass() !is obj.getClass()) + if (obj is null || this.classinfo !is obj.classinfo) return false; TextSelection s= cast(TextSelection) obj; @@ -314,7 +324,7 @@ try { String sContent= s.fDocument.get(fOffset, fLength); String content= fDocument.get(fOffset, fLength); - return sContent.equals(content); + return sContent==/+eq+/content; } catch (BadLocationException x) { } } @@ -326,7 +336,7 @@ * @see java.lang.Object#hashCode() */ public override hash_t toHash() { - int low= fDocument !is null ? fDocument.toHash() : 0; + int low= fDocument !is null ? (cast(Object)fDocument).toHash() : 0; return (fOffset << 24) | (fLength << 16) | low; } }
--- a/dwtx/jface/text/TextViewer.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/TextViewer.d Mon Sep 08 00:51:37 2008 +0200 @@ -60,7 +60,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -157,6 +156,7 @@ import dwtx.dwtxhelper.Collection; import dwtx.dwtxhelper.regex; import tango.text.convert.Format; +import tango.core.Thread; import dwt.DWT; import dwt.custom.LineBackgroundEvent; @@ -240,6 +240,8 @@ IEditingSupportRegistry, ITextOperationTarget, ITextOperationTargetExtension, IWidgetTokenOwner, IWidgetTokenOwnerExtension, IPostSelectionProvider { + alias Viewer.fireSelectionChanged fireSelectionChanged; + /** Internal flag to indicate the debug state. */ public static const bool TRACE_ERRORS= false; /** Internal flag to indicate the debug state. */ @@ -367,7 +369,7 @@ fDoubleClickSelection= textWidget.getSelection(); event.newOffset= fDoubleClickSelection.x; if (TRACE_DOUBLE_CLICK) - System.out_.println("- setting selection: x= " + fDoubleClickSelection.x + ", y= " + fDoubleClickSelection.y); //$NON-NLS-1$ //$NON-NLS-2$ + System.out_.println(Format("- setting selection: x= {}, y= {}", fDoubleClickSelection.x, fDoubleClickSelection.y)); //$NON-NLS-1$ //$NON-NLS-2$ } } else { if (fDoubleClickSelection.x <= event.offset && event.offset <= fDoubleClickSelection.y) @@ -383,11 +385,11 @@ * @since 3.3 */ private void print(MovementEvent e) { - System.out_.println("line offset: " + e.lineOffset); //$NON-NLS-1$ - System.out_.println("line: " + e.lineText); //$NON-NLS-1$ - System.out_.println("type: " + e.movement); //$NON-NLS-1$ - System.out_.println("offset: " + e.offset); //$NON-NLS-1$ - System.out_.println("newOffset: " + e.newOffset); //$NON-NLS-1$ + System.out_.println(Format("line offset: {}", e.lineOffset)); //$NON-NLS-1$ + System.out_.println(Format("line: {}", e.lineText)); //$NON-NLS-1$ + System.out_.println(Format("type: {}", e.movement)); //$NON-NLS-1$ + System.out_.println(Format("offset: {}", e.offset)); //$NON-NLS-1$ + System.out_.println(Format("newOffset: {}", e.newOffset)); //$NON-NLS-1$ } /** @@ -589,12 +591,17 @@ } /** List of registered verify key listeners. */ - private List fListeners= new ArrayList(); + private List fListeners; /** List of pending batches. */ - private List fBatched= new ArrayList(); + private List fBatched; /** The reentrance count. */ private int fReentranceCount= 0; + this(){ + fListeners= new ArrayList(); + fBatched= new ArrayList(); + } + /* * @see VerifyKeyListener#verifyKey(VerifyEvent) */ @@ -663,7 +670,7 @@ // find index based on identity int size= fListeners.size(); for (int i= 0; i < size; i++) { - if (listener is fListeners.get(i)) { + if (cast(Object)listener is fListeners.get(i)) { idx= i; break; } @@ -676,9 +683,9 @@ fListeners.remove(idx); if (index > fListeners.size()) - fListeners.add(listener); + fListeners.add(cast(Object)listener); else - fListeners.add(index, listener); + fListeners.add(index, cast(Object)listener); } if (size is 0) // checking old size, i.e. current size is size + 1 @@ -704,7 +711,7 @@ int size= fListeners.size(); for (int i= 0; i < size; i++) { - if (listener is fListeners.get(i)) { + if (cast(Object)listener is fListeners.get(i)) { fListeners.remove(i); if (size is 1) // checking old size, i.e. current size is size - 1 uninstall(); @@ -892,7 +899,7 @@ public void update(DocumentEvent event) { int offset= event.getOffset(); int length= event.getLength(); - int delta= event.getText().length() - length; + int delta= event.getText().length - length; if (offset < fPosition.getOffset()) fPosition.setOffset(fPosition.getOffset() + delta); @@ -1208,7 +1215,7 @@ * @param stateMask the state mask */ protected this(String contentType, int stateMask) { - Assert.isNotNull(contentType); + //Assert.isNotNull(contentType); fContentType= contentType; fStateMask= stateMask; } @@ -1216,8 +1223,8 @@ /* * @see java.lang.Object#equals(java.lang.Object) */ - public bool equals(Object obj) { - if (obj is null || obj.getClass() !is getClass()) + public override int opEquals(Object obj) { + if (obj is null || obj.classinfo !is this.classinfo ) return false; TextHoverKey textHoverKey= cast(TextHoverKey)obj; return textHoverKey.fContentType.equals(fContentType) && textHoverKey.fStateMask is fStateMask; @@ -1227,7 +1234,7 @@ * @see java.lang.Object#hashCode() */ public override hash_t toHash() { - return fStateMask << 16 | fContentType.toHash(); + return fStateMask << 16 | .toHash(fContentType); } /** @@ -1363,7 +1370,7 @@ Assert.isLegal(!isConnected()); fUpdaterDocument= document; try { - fUpdaterCategory= SELECTION_POSITION_CATEGORY + toHash(); + fUpdaterCategory= SELECTION_POSITION_CATEGORY ~ Integer.toString(toHash()); fUpdater= new NonDeletingPositionUpdater(fUpdaterCategory); fUpdaterDocument.addPositionCategory(fUpdaterCategory); fUpdaterDocument.addPositionUpdater(fUpdater); @@ -1410,7 +1417,7 @@ position.setOffset(offset); position.setLength(length); // http://bugs.eclipse.org/bugs/show_bug.cgi?id=32795 - position.isDeleted= false; + position.isDeleted_= false; } /** @@ -1642,12 +1649,12 @@ * The mark position category. * @since 2.0 */ - private const String MARK_POSITION_CATEGORY; + private /+const+/ String MARK_POSITION_CATEGORY; /** * The mark position updater * @since 2.0 */ - private const IPositionUpdater fMarkPositionUpdater; + private /+const+/ IPositionUpdater fMarkPositionUpdater; /** * The flag indicating the redraw behavior * @since 2.0 @@ -1677,7 +1684,7 @@ * Queued post selection changed events count. * @since 3.0 */ - private const int[] fNumberOfPostSelectionChangedEvents= new int[1]; + private /+const+/ int[] fNumberOfPostSelectionChangedEvents; /** * Last selection range sent to post selection change listeners. * @since 3.0 @@ -1687,7 +1694,7 @@ * The set of registered editor helpers. * @since 3.1 */ - private Set fEditorHelpers= new HashSet(); + private Set fEditorHelpers; /** * The internal rewrite session listener. * @since 3.1 @@ -1795,6 +1802,8 @@ MARK_POSITION_CATEGORY=Format("__mark_category_{}", toHash()); //$NON-NLS-1$ fMarkPositionUpdater= new DefaultPositionUpdater(MARK_POSITION_CATEGORY); fDocumentRewriteSessionListener= new DocumentRewriteSessionListener(); + fNumberOfPostSelectionChangedEvents= new int[1]; + fEditorHelpers= new HashSet(); } /** * Internal use only @@ -2108,16 +2117,16 @@ if (autoEditStrategies is null) return; - fAutoIndentStrategies.put(contentType, null); + fAutoIndentStrategies.put(contentType, cast(Object)null); } else { if (autoEditStrategies is null) { autoEditStrategies= new ArrayList(); - fAutoIndentStrategies.put(contentType, autoEditStrategies); + fAutoIndentStrategies.put(contentType, cast(Object)autoEditStrategies); } autoEditStrategies.clear(); - autoEditStrategies.addAll(Arrays.asList(strategies)); + autoEditStrategies.addAll(Arrays.asList(arraycast!(Object)(strategies))); } } @@ -2128,7 +2137,7 @@ public void prependAutoEditStrategy(IAutoEditStrategy strategy, String contentType) { if (strategy is null || contentType is null) - throw new IllegalArgumentException(); + throw new IllegalArgumentException(""); if (fAutoIndentStrategies is null) fAutoIndentStrategies= new HashMap(); @@ -2136,10 +2145,10 @@ List autoEditStrategies= cast(List) fAutoIndentStrategies.get(contentType); if (autoEditStrategies is null) { autoEditStrategies= new ArrayList(); - fAutoIndentStrategies.put(contentType, autoEditStrategies); - } - - autoEditStrategies.add(0, strategy); + fAutoIndentStrategies.put(contentType,cast(Object) autoEditStrategies); + } + + autoEditStrategies.add(0, cast(Object)strategy); } /* @@ -2155,14 +2164,14 @@ return; for (final Iterator iterator= autoEditStrategies.iterator(); iterator.hasNext(); ) { - if (iterator.next().equals(strategy)) { + if (iterator.next().opEquals(cast(Object)strategy)) { iterator.remove(); break; } } if (autoEditStrategies.isEmpty()) - fAutoIndentStrategies.put(contentType, null); + fAutoIndentStrategies.put(contentType, cast(Object)null); } /* @@ -2187,7 +2196,7 @@ if (fIndentChars is null) fIndentChars= new HashMap(); - fIndentChars.put(contentType, indentPrefixes); + fIndentChars.put(contentType, new ArrayWrapperObject( stringcast(indentPrefixes))); } else if (fIndentChars !is null) fIndentChars.remove(contentType); @@ -2226,7 +2235,7 @@ if (defaultPrefixes !is null && defaultPrefixes.length > 0) { if (fDefaultPrefixChars is null) fDefaultPrefixChars= new HashMap(); - fDefaultPrefixChars.put(contentType, defaultPrefixes); + fDefaultPrefixChars.put(contentType, new ArrayWrapperObject( stringcast(defaultPrefixes))); } else if (fDefaultPrefixChars !is null) fDefaultPrefixChars.remove(contentType); } @@ -2263,7 +2272,7 @@ if (fTextHovers is null) { fTextHovers= new HashMap(); } - fTextHovers.put(key, hover); + fTextHovers.put(key, cast(Object)hover); } else if (fTextHovers !is null) fTextHovers.remove(key); @@ -2528,7 +2537,7 @@ offset= lineEnd; String delimiter= document.getLineDelimiter(lineNumber); if (delimiter !is null) - offset += delimiter.length(); + offset += delimiter.length; } int end= offset + length; @@ -2591,13 +2600,13 @@ */ public void addPostSelectionChangedListener(ISelectionChangedListener listener) { - Assert.isNotNull(listener); + Assert.isNotNull(cast(Object)listener); if (fPostSelectionChangedListeners is null) fPostSelectionChangedListeners= new ArrayList(); - if (!fPostSelectionChangedListeners.contains(listener)) - fPostSelectionChangedListeners.add(listener); + if (!fPostSelectionChangedListeners.contains(cast(Object)listener)) + fPostSelectionChangedListeners.add(cast(Object)listener); } /* @@ -2606,10 +2615,10 @@ */ public void removePostSelectionChangedListener(ISelectionChangedListener listener) { - Assert.isNotNull(listener); + Assert.isNotNull(cast(Object)listener); if (fPostSelectionChangedListeners !is null) { - fPostSelectionChangedListeners.remove(listener); + fPostSelectionChangedListeners.remove(cast(Object)listener); if (fPostSelectionChangedListeners.size() is 0) fPostSelectionChangedListeners= null; } @@ -2645,7 +2654,10 @@ fNumberOfPostSelectionChangedEvents[0]++; display.timerExec(getEmptySelectionChangedEventDelay(), new class() Runnable { - final int id= fNumberOfPostSelectionChangedEvents[0]; + const int id; + this(){ + id = fNumberOfPostSelectionChangedEvents[0]; + } public void run() { if (id is fNumberOfPostSelectionChangedEvents[0]) { // Check again because this is executed after the delay @@ -2653,7 +2665,7 @@ Point selection= fTextWidget.getSelectionRange(); if (selection !is null) { IRegion r= widgetRange2ModelRange(new Region(selection.x, selection.y)); - if (fireEqualSelection || (r !is null && !r.equals(fLastSentPostSelectionChange)) || r is null) { + if (fireEqualSelection || (r !is null && !(cast(Object)r).opEquals(cast(Object)fLastSentPostSelectionChange)) || r is null) { fLastSentPostSelectionChange= r; firePostSelectionChanged(selection.x, selection.y); } @@ -2703,7 +2715,7 @@ protected void fireSelectionChanged(int offset, int length) { if (redraws()) { IRegion r= widgetRange2ModelRange(new Region(offset, length)); - if ((r !is null && !r.equals(fLastSentSelectionChange)) || r is null) { + if ((r !is null && !(cast(Object)r).opEquals(cast(Object)fLastSentSelectionChange)) || r is null) { fLastSentSelectionChange= r; ISelection selection= r !is null ? new TextSelection(getDocument(), r.getOffset(), r.getLength()) : TextSelection.emptySelection(); SelectionChangedEvent event= new SelectionChangedEvent(this, selection); @@ -2759,13 +2771,13 @@ */ public void addTextListener(ITextListener listener) { - Assert.isNotNull(listener); + Assert.isNotNull(cast(Object)listener); if (fTextListeners is null) fTextListeners= new ArrayList(); - if (!fTextListeners.contains(listener)) - fTextListeners.add(listener); + if (!fTextListeners.contains(cast(Object)listener)) + fTextListeners.add(cast(Object)listener); } /* @@ -2773,10 +2785,10 @@ */ public void removeTextListener(ITextListener listener) { - Assert.isNotNull(listener); + Assert.isNotNull(cast(Object)listener); if (fTextListeners !is null) { - fTextListeners.remove(listener); + fTextListeners.remove(cast(Object)listener); if (fTextListeners.size() is 0) fTextListeners= null; } @@ -2811,13 +2823,13 @@ */ public void addTextInputListener(ITextInputListener listener) { - Assert.isNotNull(listener); + Assert.isNotNull(cast(Object)listener); if (fTextInputListeners is null) fTextInputListeners= new ArrayList(); - if (!fTextInputListeners.contains(listener)) - fTextInputListeners.add(listener); + if (!fTextInputListeners.contains(cast(Object)listener)) + fTextInputListeners.add(cast(Object)listener); } /* @@ -2825,10 +2837,10 @@ */ public void removeTextInputListener(ITextInputListener listener) { - Assert.isNotNull(listener); + Assert.isNotNull(cast(Object)listener); if (fTextInputListeners !is null) { - fTextInputListeners.remove(listener); + fTextInputListeners.remove(cast(Object)listener); if (fTextInputListeners.size() is 0) fTextInputListeners= null; } @@ -2874,7 +2886,7 @@ * @see Viewer#getInput() */ public Object getInput() { - return getDocument(); + return cast(Object)getDocument(); } /* @@ -2910,7 +2922,7 @@ setVisibleDocument(fDocument); resetPlugins(); - inputChanged(fDocument, oldDocument); + inputChanged(cast(Object)fDocument, cast(Object)oldDocument); fireInputDocumentChanged(oldDocument, fDocument); fLastSentSelectionChange= null; @@ -2939,7 +2951,7 @@ } resetPlugins(); - inputChanged(fDocument, oldDocument); + inputChanged(cast(Object)fDocument, cast(Object)oldDocument); fireInputDocumentChanged(oldDocument, fDocument); fLastSentSelectionChange= null; @@ -3062,8 +3074,8 @@ initializeViewportUpdate(); } - if (!fViewportListeners.contains(listener)) - fViewportListeners.add(listener); + if (!fViewportListeners.contains(cast(Object)listener)) + fViewportListeners.add(cast(Object)listener); } /* @@ -3071,7 +3083,7 @@ */ public void removeViewportListener(IViewportListener listener) { if (fViewportListeners !is null) - fViewportListeners.remove(listener); + fViewportListeners.remove(cast(Object)listener); } /** @@ -3311,7 +3323,7 @@ float index= (cast(float)newOffset) / (cast(float)getAverageCharWidth()); - fTextWidget.setHorizontalIndex(Math.round(index)); + fTextWidget.setHorizontalIndex(cast(int)Math.round(index)); } } @@ -3570,6 +3582,9 @@ return 0; } + package int _getVisibleRegionOffset_package() { + return _getVisibleRegionOffset(); + } /* * @see ITextViewer#getVisibleRegion() @@ -3651,7 +3666,7 @@ if (strategy !is null) { if (fDoubleClickStrategies is null) fDoubleClickStrategies= new HashMap(); - fDoubleClickStrategies.put(contentType, strategy); + fDoubleClickStrategies.put(stringcast(contentType), cast(Object)strategy); } else if (fDoubleClickStrategies !is null) fDoubleClickStrategies.remove(contentType); } @@ -3950,6 +3965,9 @@ extension.acceptPostNotificationReplaces(); } } + package void ignoreAutoEditStrategies_package(bool ignore) { + return ignoreAutoEditStrategies(ignore); + } /** * Returns whether this viewer ignores the registered auto edit strategies. @@ -4410,8 +4428,8 @@ char startChar= adapter.charAt(widgetPos); char endChar= adapter.charAt(widgetPos+length-1); bool borderHasLineDelimiter= startChar is '\n' || startChar is '\r' || endChar is '\n' || endChar is '\r'; - bool redraws= redraws(); - if (borderHasLineDelimiter && redraws) + bool redraws_= redraws(); + if (borderHasLineDelimiter && redraws_) setRedraw(false); if (redraws()) { @@ -4420,7 +4438,7 @@ selectionChanged(widgetPos, length); } else { setSelectedRange(widgetOffset2ModelOffset(widgetPos), length); - if (redraws) + if (redraws_) setRedraw(true); } @@ -4487,8 +4505,8 @@ char startChar= adapter.charAt(widgetPos); char endChar= adapter.charAt(widgetPos+length-1); bool borderHasLineDelimiter= startChar is '\n' || startChar is '\r' || endChar is '\n' || endChar is '\r'; - bool redraws= redraws(); - if (borderHasLineDelimiter && redraws) + bool redraws_= redraws(); + if (borderHasLineDelimiter && redraws_) setRedraw(false); if (redraws()) { @@ -4497,7 +4515,7 @@ selectionChanged(widgetPos, length); } else { setSelectedRange(modelPos, length); - if (redraws) + if (redraws_) setRedraw(true); } @@ -4994,7 +5012,7 @@ public ITextHover getCurrentTextHover() { if (fTextHoverManager is null) return null; - return fTextHoverManager.getCurrentTextHover(); + return fTextHoverManager.getCurrentTextHover_package(); } /* @@ -5003,7 +5021,7 @@ public Point getHoverEventLocation() { if (fTextHoverManager is null) return null; - return fTextHoverManager.getHoverEventLocation(); + return fTextHoverManager.getHoverEventLocation_package(); } /** @@ -5404,13 +5422,13 @@ */ public void addTextPresentationListener(ITextPresentationListener listener) { - Assert.isNotNull(listener); + Assert.isNotNull(cast(Object)listener); if (fTextPresentationListeners is null) fTextPresentationListeners= new ArrayList(); - if (!fTextPresentationListeners.contains(listener)) - fTextPresentationListeners.add(listener); + if (!fTextPresentationListeners.contains(cast(Object)listener)) + fTextPresentationListeners.add(cast(Object)listener); } /* @@ -5419,10 +5437,10 @@ */ public void removeTextPresentationListener(ITextPresentationListener listener) { - Assert.isNotNull(listener); + Assert.isNotNull(cast(Object)listener); if (fTextPresentationListeners !is null) { - fTextPresentationListeners.remove(listener); + fTextPresentationListeners.remove(cast(Object)listener); if (fTextPresentationListeners.size() is 0) fTextPresentationListeners= null; } @@ -5434,7 +5452,7 @@ */ public void register(IEditingSupport helper) { Assert.isLegal(helper !is null); - fEditorHelpers.add(helper); + fEditorHelpers.add(cast(Object)helper); } /* @@ -5442,7 +5460,7 @@ * @since 3.1 */ public void unregister(IEditingSupport helper) { - fEditorHelpers.remove(helper); + fEditorHelpers.remove(cast(Object)helper); } /*
--- a/dwtx/jface/text/TextViewerHoverManager.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/TextViewerHoverManager.d Mon Sep 08 00:51:37 2008 +0200 @@ -196,7 +196,7 @@ /** The stopper of the computation thread */ private ITextListener fStopper; /** Internal monitor */ - private Object fMutex= new Object(); + private Object fMutex; /** The currently shown text hover. */ private /+volatile+/ ITextHover fTextHover; /** @@ -225,6 +225,7 @@ * @param creator the information control creator */ public this(TextViewer textViewer, IInformationControlCreator creator) { + fMutex= new Object(); super(creator); fTextViewer= textViewer; fStopper= new class() ITextListener { @@ -351,7 +352,7 @@ fThread.name = "Text Viewer Hover Presenter"; //$NON-NLS-1$ fThread.isDaemon(true); - fThread.setPriority(Thread.MIN_PRIORITY); + fThread.priority(Thread.PRIORITY_MIN); synchronized (fMutex) { fTextViewer.addTextListener(fStopper); fThread.start(); @@ -414,7 +415,7 @@ return extension.widgetOffset2ModelOffset(widgetOffset); } - return widgetOffset + fTextViewer._getVisibleRegionOffset(); + return widgetOffset + fTextViewer._getVisibleRegionOffset_package(); } catch (IllegalArgumentException e) { return -1; @@ -517,6 +518,9 @@ protected ITextHover getCurrentTextHover() { return fTextHover; } + package ITextHover getCurrentTextHover_package() { + return getCurrentTextHover(); + } /* * @see dwtx.jface.text.AbstractHoverInformationControlManager#dispose()
--- a/dwtx/jface/text/TextViewerUndoManager.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/TextViewerUndoManager.d Mon Sep 08 00:51:37 2008 +0200 @@ -301,7 +301,7 @@ fTextViewer.getTextWidget().getDisplay().syncExec(new class() Runnable { public void run() { if ( cast(TextViewer)fTextViewer ) - (cast(TextViewer)fTextViewer).ignoreAutoEditStrategies(true); + (cast(TextViewer)fTextViewer).ignoreAutoEditStrategies_package(true); } }); @@ -309,7 +309,7 @@ fTextViewer.getTextWidget().getDisplay().syncExec(new class() Runnable { public void run() { if ( cast(TextViewer)fTextViewer ) - (cast(TextViewer)fTextViewer).ignoreAutoEditStrategies(false); + (cast(TextViewer)fTextViewer).ignoreAutoEditStrategies_package(false); } }); if (event.isCompound()) { @@ -436,7 +436,7 @@ shell= st.getShell(); } if (Display.getCurrent() !is null) - MessageDialog.openError(shell, title, ex.getLocalizedMessage()); + MessageDialog.openError(shell, title, ex.msg/+getLocalizedMessage()+/); else { Display display; Shell finalShell= shell; @@ -445,7 +445,7 @@ else display= Display.getDefault(); display.syncExec(dgRunnable((Shell finalShell_, String title_, Exception ex_ ) { - MessageDialog.openError(finalShell_, title_, ex_.getLocalizedMessage()); + MessageDialog.openError(finalShell_, title_, ex_.msg/+getLocalizedMessage()+/); },finalShell, title, ex )); } }
--- a/dwtx/jface/text/TreeLineTracker.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/TreeLineTracker.d Mon Sep 08 00:51:37 2008 +0200 @@ -61,7 +61,6 @@ import dwtx.jface.text.IDocumentExtension4; // packageimport import dwtx.jface.text.IDocumentExtension2; // packageimport import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport -import dwtx.jface.text.Assert; // packageimport import dwtx.jface.text.DefaultInformationControl; // packageimport import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport import dwtx.jface.text.DocumentClone; // packageimport @@ -155,6 +154,8 @@ import dwt.dwthelper.utils; import dwtx.dwtxhelper.Collection; +import tango.text.convert.Format; +import tango.core.Exception; import dwtx.core.runtime.Assert; import dwtx.jface.text.AbstractLineTracker; @@ -282,7 +283,7 @@ default: bal= Byte.toString(balance); } - return "[" + offset + "+" + pureLength() + "+" + delimiter.length() + "|" + line + "|" + bal + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ + return Format("[{}+{}+{}|{}|{}]", offset, pureLength(), delimiter.length, line, bal ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ } /** @@ -291,19 +292,20 @@ * @return the pure line length */ int pureLength() { - return length - delimiter.length(); + return length - delimiter.length; } } /** * The root node of the tree, never <code>null</code>. */ - private Node fRoot= new Node(0, NO_DELIM); + private Node fRoot; /** * Creates a new line tracker. */ protected this() { + fRoot= new Node(0, NO_DELIM); } /** @@ -312,6 +314,7 @@ * @param tracker */ this(ListLineTracker tracker) { + fRoot= new Node(0, NO_DELIM); final List lines= tracker.getLines(); final int n= lines.size(); if (n is 0) @@ -748,7 +751,7 @@ // Inlined nodeByOffset as we need both node and offset int remaining= offset; Node first= fRoot; - final int firstNodeOffset; + int firstNodeOffset; while (true) { if (first is null) @@ -802,7 +805,7 @@ if (info is null || info.delimiter is null) { // a) trivial case: insert into a single node, no line mangling - int added= text is null ? 0 : text.length(); + int added= text is null ? 0 : text.length; updateLength(node, added - length); } else { // b) more lines to add between two chunks of the first node @@ -827,7 +830,7 @@ // Inline addlines end // add remaining chunk merged with last (incomplete) additional line - insertAfter(node, remainder + text.length() - consumed, remDelim); + insertAfter(node, remainder + text.length - consumed, remDelim); } } @@ -847,18 +850,18 @@ // delete intermediate nodes // TODO could be further optimized: replace intermediate lines with intermediate added lines // to reduce re-balancing - Node successor= successor(node); - while (successor !is last) { - length -= successor.length; - Node toDelete= successor; - successor= successor(successor); + Node successor_= successor(node); + while (successor_ !is last) { + length -= successor_.length; + Node toDelete= successor_; + successor_= successor(successor_); updateLength(toDelete, -toDelete.length); } AbstractLineTracker_DelimiterInfo info= text is null ? null : nextDelimiterInfo(text, 0); if (info is null || info.delimiter is null) { - int added= text is null ? 0 : text.length(); + int added= text is null ? 0 : text.length; // join the two lines if there are no lines added join(node, last, added - length); @@ -881,7 +884,7 @@ } // Inline addLines end - updateLength(last, text.length() - consumed - length); + updateLength(last, text.length - consumed - length); } } @@ -914,7 +917,7 @@ node.length += delta; // check deletion - final int lineDelta; + int lineDelta; bool delete__= node.length is 0 && node.delimiter !is NO_DELIM; if (delete__) lineDelta= -1; @@ -1010,39 +1013,39 @@ // lostLeftChild= true; } else { // 3) hard case - replace node with its successor - Node successor= successor(node); + Node successor_= successor(node); // successor exists (otherwise node would not have right child, case 1) - if (ASSERT) Assert.isNotNull(successor); + if (ASSERT) Assert.isNotNull(successor_); // successor has no left child (a left child would be the real successor of node) - if (ASSERT) Assert.isTrue(successor.left is null); - if (ASSERT) Assert.isTrue(successor.line is 0); + if (ASSERT) Assert.isTrue(successor_.left is null); + if (ASSERT) Assert.isTrue(successor_.line is 0); // successor is the left child of its parent (otherwise parent would be smaller and // hence the real successor) - if (ASSERT) Assert.isTrue(successor is successor.parent.left); + if (ASSERT) Assert.isTrue(successor_ is successor_.parent.left); // successor is not a child of node (would have been covered by 2a) - if (ASSERT) Assert.isTrue(successor.parent !is node); + if (ASSERT) Assert.isTrue(successor_.parent !is node); - toUpdate= successor.parent; + toUpdate= successor_.parent; lostLeftChild= true; // update relative indices - updateParentChain(successor, node, -successor.length, -1); + updateParentChain(successor_, node, -successor_.length, -1); // delete successor from its current place - like 1) - setChild(toUpdate, successor.right, true); + setChild(toUpdate, successor_.right, true); // move node's subtrees to its successor - setChild(successor, node.right, false); - setChild(successor, node.left, true); + setChild(successor_, node.right, false); + setChild(successor_, node.left, true); // replace node by successor in its parent - setChild(parent, successor, isLeftChild); + setChild(parent, successor_, isLeftChild); // update the successor - successor.line= node.line; - successor.offset= node.offset; - successor.balance= node.balance; + successor_.line= node.line; + successor_.offset= node.offset; + successor_.balance= node.balance; } updateParentBalanceAfterDeletion(toUpdate, lostLeftChild); @@ -1291,7 +1294,7 @@ // Inline nodeByOffset start as we need both node and offset int remaining= offset; Node node= fRoot; - final int lineOffset; + int lineOffset; while (true) { if (node is null) @@ -1388,7 +1391,7 @@ try { replace(0, 0, text); } catch (BadLocationException x) { - throw new InternalError(); + throw new AssertException(__FILE__,__LINE__); } } @@ -1398,7 +1401,7 @@ public override String toString() { int depth= computeDepth(fRoot); int WIDTH= 30; - int leaves= cast(int) Math.pow(2, depth - 1); + int leaves= cast(int) Math.pow( cast(real)2, cast(uint) depth - 1); int width= WIDTH * leaves; String empty= "."; //$NON-NLS-1$ @@ -1416,13 +1419,13 @@ // print nodes for (ListIterator it= roots.listIterator(); it.hasNext();) { // pad before - buf.append(space, 0, spaces); + buf.append(space[ 0 .. spaces]); Node node= cast(Node) it.next(); String box; // replace the node with its children if (node is null) { - it.add(null); + it.add(cast(Object)null); box= empty; } else { it.set(node.left); @@ -1433,12 +1436,12 @@ // draw the node, pad to WIDTH int pad_left= (WIDTH - box.length() + 1) / 2; int pad_right= WIDTH - box.length() - pad_left; - buf.append(space, 0, pad_left); + buf.append(space[ 0 .. pad_left]); buf.append(box); - buf.append(space, 0, pad_right); + buf.append(space[ 0 .. pad_right]); // pad after - buf.append(space, 0, spaces); + buf.append(space[ 0 .. spaces]); } buf.append('\n'); @@ -1470,7 +1473,7 @@ try { checkTreeOffsets(nodeByOffset(0), [0, 0], null); } catch (BadLocationException x) { - throw new AssertionError(); + throw new AssertException(__FILE__,__LINE__); } }
--- a/dwtx/jface/text/TypedPosition.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/TypedPosition.d Mon Sep 08 00:51:37 2008 +0200 @@ -204,9 +204,9 @@ /* * @see java.lang.Object#equals(java.lang.Object) */ - public bool equals(Object o) { + public override int opEquals(Object o) { if ( cast(TypedPosition)o ) { - if (super.equals(o)) { + if (super.opEquals(o)) { TypedPosition p= cast(TypedPosition) o; return (fType is null && p.getType() is null) || fType.equals(p.getType()); } @@ -218,7 +218,7 @@ * @see java.lang.Object#hashCode() */ public override hash_t toHash() { - int type= fType is null ? 0 : fType.toHash(); + int type= fType is null ? 0 : .toHash(fType); return super.toHash() | type; } }
--- a/dwtx/jface/text/TypedRegion.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/TypedRegion.d Mon Sep 08 00:51:37 2008 +0200 @@ -188,10 +188,10 @@ /* * @see java.lang.Object#equals(java.lang.Object) */ - public bool equals(Object o) { + public override int opEquals(Object o) { if ( cast(TypedRegion)o ) { TypedRegion r= cast(TypedRegion) o; - return super.equals(r) && ((fType is null && r.getType() is null) || fType.equals(r.getType())); + return super.opEquals(r) && ((fType is null && r.getType() is null) || fType ==/+eq+/r.getType()); } return false; } @@ -200,7 +200,7 @@ * @see java.lang.Object#hashCode() */ public override hash_t toHash() { - int type= fType is null ? 0 : fType.toHash(); + int type= fType is null ? 0 : .toHash(fType); return super.toHash() | type; } }
--- a/dwtx/jface/text/WhitespaceCharacterPainter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/WhitespaceCharacterPainter.d Mon Sep 08 00:51:37 2008 +0200 @@ -170,9 +170,9 @@ /** - * A painter for drawing visible characters for (invisible) whitespace + * A painter for drawing visible characters for (invisible) whitespace * characters. - * + * * @since 3.3 */ public class WhitespaceCharacterPainter : IPainter, PaintListener { @@ -182,7 +182,7 @@ private static const char TAB_SIGN= '\u00bb'; private static const char CARRIAGE_RETURN_SIGN= '\u00a4'; private static const char LINE_FEED_SIGN= '\u00b6'; - + /** Indicates whether this painter is active. */ private bool fIsActive= false; /** The source viewer this painter is attached to. */ @@ -194,11 +194,11 @@ /** * Creates a new painter for the given text viewer. - * + * * @param textViewer the text viewer the painter should be attached to */ public this(ITextViewer textViewer) { - super(); +// super(); fTextViewer= textViewer; fTextWidget= textViewer.getTextWidget(); GC gc= new GC(fTextWidget); @@ -278,7 +278,7 @@ /** * Draw characters in view range. - * + * * @param gc * @param x * @param y @@ -301,7 +301,7 @@ /** * Draw the given line range. - * + * * @param gc * @param startLine first line number * @param endLine last line number (inclusive) @@ -370,7 +370,7 @@ /** * Draw characters of content range. - * + * * @param gc the GC * @param startOffset inclusive start index * @param endOffset exclusive end index @@ -434,14 +434,14 @@ } draw(gc, widgetOffset, visibleChar.toString(), fg); } - visibleChar.delete_(0, visibleChar.length()); + visibleChar.truncate(0); } } } /** * Check if the given widget line is a folded line. - * + * * @param widgetLine the widget line number * @return <code>true</code> if the line is folded */ @@ -464,7 +464,7 @@ /** * Draw string at widget offset. - * + * * @param gc * @param offset the widget offset * @param s the string to be drawn @@ -476,7 +476,7 @@ FontMetrics fontMetrics= gc.getFontMetrics(); int fontBaseline= fontMetrics.getAscent() + fontMetrics.getLeading(); int baslineDelta= baseline - fontBaseline; - + Point pos= fTextWidget.getLocationAtOffset(offset); gc.setForeground(fg); gc.drawString(s, pos.x, pos.y + baslineDelta, true); @@ -484,7 +484,7 @@ /** * Convert a document offset to the corresponding widget offset. - * + * * @param documentOffset * @return widget offset */ @@ -503,7 +503,7 @@ /** * Convert a widget offset to the corresponding document offset. - * + * * @param widgetOffset * @return document offset */
--- a/dwtx/jface/text/contentassist/AdditionalInfoController.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/contentassist/AdditionalInfoController.d Mon Sep 08 00:51:37 2008 +0200 @@ -90,7 +90,7 @@ * elapsed after it was scheduled without a {@link #reset(ICompletionProposal) reset} * to occur. */ - private abstract class Task : Runnable { + private static abstract class Task : Runnable { /** * @return the delay in milliseconds before this task should be run */ @@ -211,7 +211,7 @@ public void run() { synchronized (this.outer) { if (proposal is getCurrentProposal()) { - Object info= proposal.getAdditionalProposalInfo(); + Object info= stringcast(proposal.getAdditionalProposalInfo()); showInformation(proposal, info); } } @@ -643,6 +643,9 @@ protected void hideInformationControl() { super.hideInformationControl(); } + package void hideInformationControl_package() { + this.hideInformationControl(); + } /** * @return the current information control, or <code>null</code> if none available
--- a/dwtx/jface/text/contentassist/CompletionProposalPopup.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/contentassist/CompletionProposalPopup.d Mon Sep 08 00:51:37 2008 +0200 @@ -312,7 +312,7 @@ int accelerator= SWTKeySupport.convertEventToUnmodifiedAccelerator(e); KeySequence sequence= KeySequence.getInstance(SWTKeySupport.convertAcceleratorToKeyStroke(accelerator)); - if (sequence.equals(fCommandSequence)) + if (sequence==/++/fCommandSequence) if (fContentAssistant.isPrefixCompletionEnabled()) incrementalComplete(); else @@ -658,14 +658,14 @@ GridData data= new GridData(GridData.FILL_BOTH); - Point size= fContentAssistant.restoreCompletionProposalPopupSize(); + Point size= fContentAssistant.restoreCompletionProposalPopupSize_package(); if (size !is null) { fProposalTable.setLayoutData(data); fProposalShell.setSize(size); } else { int height= fProposalTable.getItemHeight() * 10; // use golden ratio as default aspect ratio - final double aspectRatio= (1 + Math.sqrt(5)) / 2; + double aspectRatio= (1 + Math.sqrt(5.0f)) / 2; int width= cast(int) (height * aspectRatio); Rectangle trim= fProposalTable.computeTrim(0, 0, width, height); data.heightHint= trim.height; @@ -842,7 +842,7 @@ fMessageText= new Label(fProposalShell, DWT.RIGHT); GridData textData= new GridData(DWT.FILL, DWT.BOTTOM, true, false); fMessageText.setLayoutData(textData); - fMessageText.setText(fContentAssistant.getStatusMessage() + " "); //$NON-NLS-1$ + fMessageText.setText(fContentAssistant.getStatusMessage() ~ " "); //$NON-NLS-1$ if (fMessageTextFont is null) { Font font= fMessageText.getFont(); Display display= fProposalShell.getDisplay(); @@ -895,7 +895,7 @@ TableOwnerDrawSupport.storeStyleRanges(item, 0, styleRanges); item.setImage(current.getImage()); - item.setData(current); + item.setData(cast(Object)current); } else { // this should not happen, but does on win32 } @@ -1129,7 +1129,7 @@ fFilteredProposals= null; fComputedProposals= null; - fContentAssistant.possibleCompletionsClosed(); + fContentAssistant.possibleCompletionsClosed_package(); } /** @@ -1178,7 +1178,7 @@ ICompletionProposal proposal= proposals[i]; item.setText(proposal.getDisplayString()); item.setImage(proposal.getImage()); - item.setData(proposal); + item.setData(cast(Object)proposal); } fProposalTable.setRedraw(true); } @@ -1199,7 +1199,7 @@ */ private Point getLocation() { int caret= fContentAssistSubjectControlAdapter.getCaretOffset(); - Rectangle location= fContentAssistant.getLayoutManager().computeBoundsBelowAbove(fProposalShell, fSize is null ? fProposalShell.getSize() : fSize, caret, this); + Rectangle location= fContentAssistant.getLayoutManager().computeBoundsBelowAbove_package(fProposalShell, fSize is null ? fProposalShell.getSize() : fSize, caret, this); return Geometry.getLocation(location); } @@ -1519,13 +1519,13 @@ ICompletionProposalExtension2 p= cast(ICompletionProposalExtension2) proposals[i]; if (p.validate(document, offset, event)) - filtered.add(p); + filtered.add(cast(Object)p); } else if (cast(ICompletionProposalExtension)proposals[i] ) { ICompletionProposalExtension p= cast(ICompletionProposalExtension) proposals[i]; if (p.isValidFor(document, offset)) - filtered.add(p); + filtered.add(cast(Object)p); } else { // restore original behavior @@ -1653,7 +1653,7 @@ IDocument document= fContentAssistSubjectControlAdapter.getDocument(); // contains the common postfix in the case that there are any proposals matching our LHS - StringBuffer rightCasePostfix= null; + StringBuffer rightCasePostfix; List rightCase= new ArrayList(); bool isWrongCaseMatch= false; @@ -1663,7 +1663,7 @@ CharSequence wrongCasePrefix= null; int wrongCasePrefixStart= 0; // contains the common postfix of all case-insensitive matches - StringBuffer wrongCasePostfix= null; + StringBuffer wrongCasePostfix; List wrongCase= new ArrayList(); for (int i= 0; i < fFilteredProposals.length; i++) { @@ -1675,14 +1675,14 @@ int start= (cast(ICompletionProposalExtension3)proposal).getPrefixCompletionStart(fContentAssistSubjectControlAdapter.getDocument(), fFilterOffset); CharSequence insertion= (cast(ICompletionProposalExtension3)proposal).getPrefixCompletionText(fContentAssistSubjectControlAdapter.getDocument(), fFilterOffset); if (insertion is null) - insertion= proposal.getDisplayString(); + insertion= new StringCharSequence(proposal.getDisplayString()); try { int prefixLength= fFilterOffset - start; int relativeCompletionOffset= Math.min(insertion.length(), prefixLength); String prefix= document.get(start, prefixLength); if (!isWrongCaseMatch && insertion.toString().startsWith(prefix)) { isWrongCaseMatch= false; - rightCase.add(proposal); + rightCase.add(cast(Object)proposal); CharSequence newPostfix= insertion.subSequence(relativeCompletionOffset, insertion.length()); if (rightCasePostfix is null) rightCasePostfix= new StringBuffer(newPostfix.toString()); @@ -1699,7 +1699,7 @@ wrongCasePostfix= new StringBuffer(newPostfix.toString()); else truncatePostfix(wrongCasePostfix, newPostfix); - wrongCase.add(proposal); + wrongCase.add(cast(Object)proposal); } else { return false; } @@ -1740,13 +1740,13 @@ if (isWrongCaseMatch) prefix= wrongCasePrefix; else - prefix= ""; //$NON-NLS-1$ + prefix= new StringCharSequence(""); //$NON-NLS-1$ CharSequence postfix; if (isWrongCaseMatch) - postfix= wrongCasePostfix; + postfix= new StringCharSequence(wrongCasePostfix.toString); else - postfix= rightCasePostfix; + postfix= new StringCharSequence(rightCasePostfix.toString); if (prefix is null || postfix is null) return false; @@ -1758,7 +1758,7 @@ truncatePostfix(inDocument, postfix); // 5: replace and reveal - document.replace(fFilterOffset - prefix.length(), prefix.length() + inDocument.length(), prefix.toString() + postfix.toString()); + document.replace(fFilterOffset - prefix.length(), prefix.length() + inDocument.length(), prefix.toString() ~ postfix.toString()); fContentAssistSubjectControlAdapter.setSelectedRange(fFilterOffset + postfix.length(), 0); fContentAssistSubjectControlAdapter.revealRange(fFilterOffset + postfix.length(), 0); @@ -1783,8 +1783,8 @@ int oneEnd= oneOffset + oneSequence.length(); int twoEnd= twoOffset + twoSequence.length(); - String one= document.get(oneOffset, min - oneOffset) + oneSequence + document.get(oneEnd, Math.min(fFilterOffset, fFilterOffset - oneEnd)); - String two= document.get(twoOffset, min - twoOffset) + twoSequence + document.get(twoEnd, Math.min(fFilterOffset, fFilterOffset - twoEnd)); + String one= document.get(oneOffset, min - oneOffset) ~ oneSequence.toString ~ document.get(oneEnd, Math.min(fFilterOffset, fFilterOffset - oneEnd)); + String two= document.get(twoOffset, min - twoOffset) ~ twoSequence.toString ~ document.get(twoEnd, Math.min(fFilterOffset, fFilterOffset - twoEnd)); return one.equals(two); } @@ -1800,14 +1800,14 @@ // find common prefix int min= Math.min(buffer.length(), sequence.length()); for (int c= 0; c < min; c++) { - if (sequence.charAt(c) !is buffer.charAt(c)) { - buffer.delete_(c, buffer.length()); + if (sequence.charAt(c) !is buffer.slice()[c]) { + buffer.truncate(c); return; } } // all equal up to minimum - buffer.delete_(min, buffer.length()); + buffer.truncate(min); } /** @@ -1820,7 +1820,7 @@ void setMessage(String message) { Assert.isNotNull(message); if (isActive() && fMessageText !is null) - fMessageText.setText(message + " "); //$NON-NLS-1$ + fMessageText.setText(message ~ " "); //$NON-NLS-1$ } /**
--- a/dwtx/jface/text/contentassist/ContentAssistSubjectControlAdapter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/contentassist/ContentAssistSubjectControlAdapter.d Mon Sep 08 00:51:37 2008 +0200 @@ -93,7 +93,7 @@ * @param contentAssistSubjectControl the content assist subject control */ this(IContentAssistSubjectControl contentAssistSubjectControl) { - Assert.isNotNull(contentAssistSubjectControl); + Assert.isNotNull(cast(Object)contentAssistSubjectControl); fContentAssistSubjectControl= contentAssistSubjectControl; } @@ -103,7 +103,7 @@ * @param viewer the text viewer */ public this(ITextViewer viewer) { - Assert.isNotNull(viewer); + Assert.isNotNull(cast(Object)viewer); fViewer= viewer; }
--- a/dwtx/jface/text/contentassist/ContentAssistant.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/contentassist/ContentAssistant.d Mon Sep 08 00:51:37 2008 +0200 @@ -688,6 +688,9 @@ return constrainHorizontally(rect, bounds); } + package Rectangle computeBoundsAboveBelow_package(Shell shell, Point preferred, int offset) { + return computeBoundsAboveBelow(shell, preferred, offset); + } /** * Returns the display bounds for <code>shell</code> such that it appears right below @@ -735,6 +738,9 @@ return constrainHorizontally(rect, bounds); } + package Rectangle computeBoundsBelowAbove_package(Shell shell, Point preferred, int offset, CompletionProposalPopup popup) { + return computeBoundsBelowAbove(shell, preferred, offset, popup ); + } private Rectangle getCaretRectangle(int offset) { Point location= fContentAssistSubjectControlAdapter.getLocationAtOffset(offset); @@ -924,7 +930,7 @@ * @since 3.0 */ private bool fVerifyKeyListenerHooked= false; - private IContentAssistListener[] fListeners= new IContentAssistListener[4]; + private IContentAssistListener[] fListeners; /** * The content assist subject control. * @@ -966,7 +972,7 @@ * * @since 3.2 */ - private ListenerList fCompletionListeners= new ListenerList(ListenerList.IDENTITY); + private ListenerList fCompletionListeners; /** * The message to display at the bottom of the proposal popup. * @@ -1027,6 +1033,8 @@ * milliseconds delay. It uses the default partitioning. */ public this() { + fListeners= new IContentAssistListener[4]; + fCompletionListeners= new ListenerList(ListenerList.IDENTITY); fPartitioning= IDocumentExtension3.DEFAULT_PARTITIONING; } @@ -1734,6 +1742,9 @@ fLastAutoActivation= Long.MIN_VALUE; storeCompletionProposalPopupSize(); } + package void possibleCompletionsClosed_package() { + possibleCompletionsClosed(); + } /* * @see IContentAssist#showContextInformation @@ -1753,6 +1764,9 @@ */ protected void contextInformationClosed() { } + package void contextInformationClosed_package() { + contextInformationClosed(); + } /** * Requests that the specified context information to be shown. @@ -2091,6 +2105,9 @@ if (fContextInfoPopup !is null) fContextInfoPopup.hide(); } + package void hide_package() { + hide(); + } // ------ control's size handling dialog settings ------ @@ -2183,6 +2200,9 @@ return size; } + package Point restoreCompletionProposalPopupSize_package() { + return restoreCompletionProposalPopupSize(); + } /** * Sets the prefix completion property. If enabled, content assist delegates completion to
--- a/dwtx/jface/text/contentassist/ContextInformation.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/contentassist/ContextInformation.d Mon Sep 08 00:51:37 2008 +0200 @@ -112,8 +112,8 @@ * @since 3.1 */ public override hash_t toHash() { - int low= fContextDisplayString !is null ? fContextDisplayString.toHash() : 0; - return (fInformationDisplayString.toHash() << 16) | low; + int low= fContextDisplayString !is null ? .toHash(fContextDisplayString) : 0; + return (.toHash(fInformationDisplayString) << 16) | low; } /*
--- a/dwtx/jface/text/contentassist/ContextInformationPopup.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/contentassist/ContextInformationPopup.d Mon Sep 08 00:51:37 2008 +0200 @@ -102,12 +102,12 @@ * @see java.lang.Object#equals(java.lang.Object) * @since 3.0 */ - public bool equals(Object obj) { + public override int opEquals(Object obj) { if ( cast(ContextFrame)obj ) { ContextFrame frame= cast(ContextFrame) obj; - return fInformation.equals(frame.fInformation) && fBeginOffset is frame.fBeginOffset; + return fInformation==/++/frame.fInformation && fBeginOffset is frame.fBeginOffset; } - return super.equals(obj); + return super.opEquals(obj); } /* @@ -115,7 +115,7 @@ * @since 3.1 */ public override hash_t toHash() { - return (fInformation.toHash() << 16) | fBeginOffset; + return ((cast(Object)fInformation).toHash() << 16) | fBeginOffset; } } @@ -142,7 +142,7 @@ private ITextViewer fViewer; private ContentAssistant fContentAssistant; - private PopupCloser fPopupCloser= new PopupCloser(); + private PopupCloser fPopupCloser; private Shell fContextSelectorShell; private Table fContextSelectorTable; private IContextInformation[] fContextSelectorInput; @@ -152,7 +152,7 @@ private StyledText fContextInfoText; private TextPresentation fTextPresentation; - private Stack fContextFrameStack= new Stack(); + private Stack fContextFrameStack; /** * The content assist subject control. * @@ -189,6 +189,9 @@ * @param viewer the viewer on top of which the context information is shown */ public this(ContentAssistant contentAssistant, ITextViewer viewer) { + fPopupCloser= new PopupCloser(); + fContextFrameStack= new Stack(); + fContentAssistant= contentAssistant; fViewer= viewer; fContentAssistSubjectControlAdapter= new ContentAssistSubjectControlAdapter(fViewer); @@ -202,6 +205,9 @@ * @since 3.0 */ public this(ContentAssistant contentAssistant, IContentAssistSubjectControl contentAssistSubjectControl) { + fPopupCloser= new PopupCloser(); + fContextFrameStack= new Stack(); + fContentAssistant= contentAssistant; fContentAssistSubjectControl= contentAssistSubjectControl; fContentAssistSubjectControlAdapter= new ContentAssistSubjectControlAdapter(fContentAssistSubjectControl); @@ -252,7 +258,7 @@ // also check all other contexts for (Iterator it= fContextFrameStack.iterator(); it.hasNext(); ) { ContextFrame stackFrame= cast(ContextFrame) it.next(); - if (stackFrame.equals(frame)) { + if (stackFrame==/++/frame) { validateContextInformation(); return; } @@ -283,7 +289,7 @@ */ public void showContextInformation(IContextInformation info, int offset) { Control control= fContentAssistSubjectControlAdapter.getControl(); - BusyIndicator.showWhile(control.getDisplay(), dgRunnable( { + BusyIndicator.showWhile(control.getDisplay(), dgRunnable( (IContextInformation info_, int offset_){ if (info_ is null) validateContextInformation(); else { @@ -350,7 +356,7 @@ return false; // stack not empty ContextFrame top= cast(ContextFrame) fContextFrameStack.peek(); - return frame.equals(top); + return cast(bool) frame.opEquals(top); } /** @@ -362,7 +368,7 @@ * @since 3.0 */ private bool isLastFrame(ContextFrame frame) { - return frame !is null && frame.equals(fLastContext); + return frame !is null && frame.opEquals(fLastContext); } /** @@ -468,7 +474,7 @@ final int BORDER_PAD= 2; final int PAD= TEXT_PAD + BORDER_PAD; size.x += PAD; - Rectangle bounds= fContentAssistant.getLayoutManager().computeBoundsAboveBelow(fContextInfoPopup, size, offset); + Rectangle bounds= fContentAssistant.getLayoutManager().computeBoundsAboveBelow_package(fContextInfoPopup, size, offset); if (bounds.width < size.x) // we don't fit on the screen - try again and wrap size= fContextInfoText.computeSize(bounds.width - PAD, DWT.DEFAULT, true); @@ -517,7 +523,7 @@ } if (fContextInfoPopup is null) - fContentAssistant.contextInformationClosed(); + fContentAssistant.contextInformationClosed_package(); } /** @@ -653,7 +659,7 @@ } if (!Helper.okToUse(fContextInfoPopup)) - fContentAssistant.contextInformationClosed(); + fContentAssistant.contextInformationClosed_package(); } /** @@ -849,7 +855,11 @@ fContextInfoPopup.getDisplay().asyncExec(new class() Runnable { - private ContextFrame fFrame= cast(ContextFrame) fContextFrameStack.peek(); + private ContextFrame fFrame; + + this() { + fFrame= cast(ContextFrame) fContextFrameStack.peek(); + } public void run() { // only do this if no other frames have been added in between
--- a/dwtx/jface/text/contentassist/ContextInformationValidator.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/contentassist/ContextInformationValidator.d Mon Sep 08 00:51:37 2008 +0200 @@ -91,7 +91,7 @@ IContextInformation[] infos= fProcessor.computeContextInformation(fViewer, offset); if (infos !is null && infos.length > 0) { for (int i= 0; i < infos.length; i++) - if (fContextInformation.equals(infos[i])) + if (fContextInformation==/+eq+/infos[i]) return true; } return false;
--- a/dwtx/jface/text/contentassist/JFaceTextMessages.properties Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -############################################################################### -# Copyright (c) 2000, 2006 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 -############################################################################### - - -InfoPopup.info_delay_timer_name=Additional info timer -AdditionalInfoController.job_name=Computing additional info - -ContentAssistant.assist_delay_timer_name=AutoAssist Delay -CompletionProposalPopup.no_proposals=no proposals
--- a/dwtx/jface/text/contentassist/PopupCloser.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/contentassist/PopupCloser.d Mon Sep 08 00:51:37 2008 +0200 @@ -205,7 +205,7 @@ */ public void shellDeactivated(ShellEvent e) { if (fContentAssistant !is null && ! fContentAssistant.hasProposalPopupFocus()) - fContentAssistant.hide(); + fContentAssistant.hide_package(); } @@ -215,7 +215,7 @@ */ public void shellClosed(ShellEvent e) { if (fContentAssistant !is null) - fContentAssistant.hide(); + fContentAssistant.hide_package(); } /* @@ -232,7 +232,7 @@ return; if (fAdditionalInfoController.getInternalAccessor().getInformationControlReplacer() is null) - fAdditionalInfoController.hideInformationControl(); + fAdditionalInfoController.hideInformationControl_package(); else if (!fAdditionalInfoController.getInternalAccessor().isReplaceInProgress()) { IInformationControl infoControl= fAdditionalInfoController.getCurrentInformationControl2(); // During isReplaceInProgress(), events can come from the replacing information control @@ -240,7 +240,7 @@ Control control= cast(Control) event.widget; IInformationControlExtension5 iControl5= cast(IInformationControlExtension5) infoControl; if (!(iControl5.containsControl(control))) - fAdditionalInfoController.hideInformationControl(); + fAdditionalInfoController.hideInformationControl_package(); else if (event.type is DWT.MouseWheel) fAdditionalInfoController.getInternalAccessor().replaceInformationControl(false); } else if (infoControl !is null && infoControl.isFocusControl()) { @@ -294,7 +294,7 @@ control.getDisplay().asyncExec(new class() Runnable { public void run() { if (fContentAssistant !is null && ! fContentAssistant.hasProposalPopupFocus()) - fContentAssistant.hide(); + fContentAssistant.hide_package(); } }); }
--- a/dwtx/jface/text/contentassist/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta name="Author" content="IBM"> - <meta name="GENERATOR" content="Mozilla/4.51 [en] (WinNT; I) [Netscape]"> - <title>Package-level Javadoc</title> -</head> -<body> -Provides a content assist add-on for an <tt>ITextViewer</tt>. -Content assist supports the user in writing by proposing context -sensitive completions at a given document position. A completion can also -be a incomplete in itself and content assist provides means to deal with -nested completions. -<h2> -Package Specification</h2> -<tt>IContentAssistant</tt> defines the concept of the content assist add-on. -It collaborates with content type specific completion processors (<tt>IContentAssistProcessor</tt>) -in order to generate completion proposals (<tt>ICompletionProposal</tt>) -valid at the current document position. The package provides a default -implementation <tt>ContentAssistant</tt> which completely defines and implements -the UI and the control flow for content assist. -<br> -</body> -</html>
--- a/dwtx/jface/text/formatter/ContentFormatter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/formatter/ContentFormatter.d Mon Sep 08 00:51:37 2008 +0200 @@ -333,7 +333,7 @@ if (strategy is null) fStrategies.remove(contentType); else - fStrategies.put(contentType, strategy); + fStrategies.put(contentType, cast(Object)strategy); } /**
--- a/dwtx/jface/text/formatter/ContextBasedFormattingStrategy.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/formatter/ContextBasedFormattingStrategy.d Mon Sep 08 00:51:37 2008 +0200 @@ -43,7 +43,11 @@ private Map fCurrentPreferences= null; /** The list of preferences for initiated the formatting steps */ - private const LinkedList fPreferences= new LinkedList(); + private const LinkedList fPreferences; + + this(){ + fPreferences= new LinkedList(); + } /* * @see dwtx.jface.text.formatter.IFormattingStrategyExtension#format() @@ -63,7 +67,7 @@ * @see dwtx.jface.text.formatter.IFormattingStrategyExtension#formatterStarts(dwtx.jface.text.formatter.IFormattingContext) */ public void formatterStarts(IFormattingContext context) { - fPreferences.addLast(context.getProperty(FormattingContextProperties.CONTEXT_PREFERENCES)); + fPreferences.addLast(context.getProperty(stringcast(FormattingContextProperties.CONTEXT_PREFERENCES))); } /*
--- a/dwtx/jface/text/formatter/FormattingContext.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/formatter/FormattingContext.d Mon Sep 08 00:51:37 2008 +0200 @@ -39,7 +39,11 @@ public class FormattingContext : IFormattingContext { /** Map to store the properties */ - private const Map fMap= new HashMap(); + private const Map fMap; + + this(){ + fMap= new HashMap(); + } /* * @see dwtx.jface.text.formatter.IFormattingContext#dispose() @@ -117,7 +121,7 @@ for (int index= 0; index < preferences.length; index++) { preference= preferences[index]; - result= cast(String)map.get(preference); + result= stringcast(map.get(preference)); if (result !is null) { @@ -164,15 +168,15 @@ if (isBooleanPreference(preference)) { map.put(preference, (useDefault ? store.getDefaultBoolean(preference) : store.getBoolean(preference)) ? IPreferenceStore.TRUE : IPreferenceStore.FALSE); } else if (isIntegerPreference(preference)) { - map.put(preference, String.valueOf(useDefault ? store.getDefaultInt(preference) : store.getInt(preference))); + map.put(preference, String_valueOf(useDefault ? store.getDefaultInt(preference) : store.getInt(preference))); } else if (isStringPreference(preference)) { map.put(preference, useDefault ? store.getDefaultString(preference) : store.getString(preference)); } else if (isDoublePreference(preference)) { - map.put(preference, String.valueOf(useDefault ? store.getDefaultDouble(preference) : store.getDouble(preference))); + map.put(preference, String_valueOf(useDefault ? store.getDefaultDouble(preference) : store.getDouble(preference))); } else if (isFloatPreference(preference)) { - map.put(preference, String.valueOf(useDefault ? store.getDefaultFloat(preference) : store.getFloat(preference))); + map.put(preference, String_valueOf(useDefault ? store.getDefaultFloat(preference) : store.getFloat(preference))); } else if (isLongPreference(preference)) { - map.put(preference, String.valueOf(useDefault ? store.getDefaultLong(preference) : store.getLong(preference))); + map.put(preference, String_valueOf(useDefault ? store.getDefaultLong(preference) : store.getLong(preference))); } } }
--- a/dwtx/jface/text/formatter/MultiPassContentFormatter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/formatter/MultiPassContentFormatter.d Mon Sep 08 00:51:37 2008 +0200 @@ -116,7 +116,7 @@ /** The partitioning of this content formatter */ private const String fPartitioning; /** The slave formatting strategies */ - private const Map fSlaves= new HashMap(); + private const Map fSlaves; /** The default content type */ private const String fType; @@ -127,6 +127,8 @@ * @param type the default content type */ public this(String partitioning, String type) { + fSlaves= new HashMap(); + fPartitioning= partitioning; fType= type; } @@ -136,12 +138,12 @@ */ public final void format(IDocument medium, IFormattingContext context) { - context.setProperty(FormattingContextProperties.CONTEXT_MEDIUM, medium); + context.setProperty(stringcast(FormattingContextProperties.CONTEXT_MEDIUM), cast(Object)medium); - final Boolean document= cast(Boolean)context.getProperty(FormattingContextProperties.CONTEXT_DOCUMENT); + final Boolean document= cast(Boolean)context.getProperty(stringcast(FormattingContextProperties.CONTEXT_DOCUMENT)); if (document is null || !document.booleanValue()) { - final IRegion region= cast(IRegion)context.getProperty(FormattingContextProperties.CONTEXT_REGION); + final IRegion region= cast(IRegion)context.getProperty(stringcast(FormattingContextProperties.CONTEXT_REGION)); if (region !is null) { try { formatMaster(context, medium, region.getOffset(), region.getLength()); @@ -165,8 +167,8 @@ final FormattingContext context= new FormattingContext(); - context.setProperty(FormattingContextProperties.CONTEXT_DOCUMENT, Boolean.FALSE); - context.setProperty(FormattingContextProperties.CONTEXT_REGION, region); + context.setProperty(stringcast(FormattingContextProperties.CONTEXT_DOCUMENT), Boolean.FALSE); + context.setProperty(stringcast(FormattingContextProperties.CONTEXT_REGION), cast(Object)region); format(medium, context); } @@ -199,7 +201,7 @@ if (fMaster !is null) { - context.setProperty(FormattingContextProperties.CONTEXT_PARTITION, new TypedPosition(offset, length, fType)); + context.setProperty(stringcast(FormattingContextProperties.CONTEXT_PARTITION), new TypedPosition(offset, length, fType)); fMaster.formatterStarts(context); fMaster.format(); @@ -227,7 +229,7 @@ final IFormattingStrategyExtension strategy= cast(IFormattingStrategyExtension)fSlaves.get(type); if (strategy !is null) { - context.setProperty(FormattingContextProperties.CONTEXT_PARTITION, new TypedPosition(offset, length, type)); + context.setProperty(stringcast(FormattingContextProperties.CONTEXT_PARTITION), new TypedPosition(offset, length, type)); strategy.formatterStarts(context); strategy.format(); @@ -306,7 +308,7 @@ * {@link IFormattingStrategyExtension} */ public final void setMasterStrategy(IFormattingStrategy strategy) { - Assert.isTrue( cast(IFormattingStrategyExtension)strategy ); + Assert.isTrue( null !is cast(IFormattingStrategyExtension)strategy ); fMaster= cast(IFormattingStrategyExtension) strategy; } @@ -324,8 +326,8 @@ * must implement {@link IFormattingStrategyExtension} */ public final void setSlaveStrategy(IFormattingStrategy strategy, String type) { - Assert.isTrue( cast(IFormattingStrategyExtension)strategy ); + Assert.isTrue( null !is cast(IFormattingStrategyExtension)strategy ); if (!fType.equals(type)) - fSlaves.put(type, strategy); + fSlaves.put(type, cast(Object)strategy); } }
--- a/dwtx/jface/text/formatter/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta content="text/html; charset=iso-8859-1" - http-equiv="Content-Type"> - <meta content="IBM" name="Author"> - <title>Package-level Javadoc</title> -</head> -<body> -Provides a content formatter add-on for an <tt>ITextViewer</tt>. -A content formatter changes the formatting of a document region while -preserving and correctly updating the positions of the document. -<h2>Package Specification</h2> -<tt>IContentFormatter</tt> defines the concept of a text formatter. It -collaborates with content type specific formatting stratgies (<tt>IFormattingStrategy</tt>) -which for a given document region format the subregion with the -matching -content type. The package contains a default implementation of <tt>IContentFormatter</tt> -(<tt>ContentFormatter</tt>).<br> -Additionally, an implementation of <tt>IContentFormatterExtension</tt> -is provided -for text edit based formatting strategies. This implementation only -accepts formatting strategies -implementing the extension interface <tt>IFormattingStrategyExtension</tt>. -These formatting strategies are required to handle the position -updating of the document. To facilitate the work with these text edit -based formatting strategies, a default implementation called <tt>ContextBasedFormattingStrategy</tt> -is provided. Formatting strategies inheriting from this class are text -edit based and behave context dependent. Depending on the formatting -context that is passed -to the content formatter, different preferences and modes can be used -to format different parts of a document. -<p>To set up a proper working text edit based content formatter, the -following steps are needed: -</p> -<ul> - <li>Create an instance of <tt>IFormattingContext</tt>. The default -implementation <tt>FormattingContext</tt> already -provides support for the conversion of preferences from a preference -store to a map and vice versa. The method <tt>getPreferenceKeys</tt> -usually has to be overridden to return the appropriate keys of the -preferences used during the formatting process. Then register a map of -preferences -with the formatting context by calling <tt>setProperty(String, Object)</tt> -with the property identifier <tt>FormattingContextProperties.CONTEXT_PREFERENCES</tt>.</li> - <li>Create an instance of the text edit based content formatter class - <tt>MultiPassContentFormatter</tt>. The document partitioning and -its associated -default content type have to be passed to the constructor. This -information is needed since the content formatter is able to format -documents -according to arbitrary partitionings and default content types.</li> - <li>Register the formatting strategies for the content types that -have to be formatted. If a formatting strategy is -registered as master strategy, it is automatically associated with the -default content type of the specified partitioning. -If the formatting strategy is registered as slave strategy, it is -associated with the indicated content type during the registration. -Note that the master strategy can also be registered as a slave -strategy for a content type other than the default content type.</li> - <li>Specify the proper formatting mode (see -FormattingContextProperties): - <ul> - <li>For whole document formatting set the property <tt>CONTEXT_DOCUMENT</tt> -of the created formatting context to <tt>true</tt>. This is -equivalent to setting <code>CONTEXT_REGION</code> with a region -spanning the whole document.</li> - <li>For multiple region formatting set the property <code>CONTEXT_REGION</code> -of the formatting context. Note that the content formatter -automatically aligns the offset of a region to a line start for the -master formatting strategy, it also completes eventual partitions -covered only partially by the region for the slave formatting -strategies.</li> - <li>For explicit formatting of a partition with the formatting -strategy registered for a certain content type use the -property <tt>CONTEXT_PARTITION</tt>. Note that the region denoted by -this property must correspond to a partition relative to the specified -partitioning in the document to be formatted. The content type of this -property overrides the content type of the partition -in the document.</li> - </ul> - </li> - <li>Call the method <tt>MultiPassContentFormatter#format(IDocument, -IFormattingContext)</tt> with the created formatting context -and the document to be formatted.</li> -</ul> -<p></p> -</body> -</html>
--- a/dwtx/jface/text/hyperlink/DefaultHyperlinkPresenter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/hyperlink/DefaultHyperlinkPresenter.d Mon Sep 08 00:51:37 2008 +0200 @@ -67,7 +67,7 @@ * It can only be used together with the {@link HyperlinkManager#FIRST} * or the {@link HyperlinkManager#LONGEST_REGION_FIRST} hyperlink strategy. * </p> - * + * * @since 3.1 */ public class DefaultHyperlinkPresenter : IHyperlinkPresenter, IHyperlinkPresenterExtension, ITextPresentationListener, ITextInputListener, IDocumentListener, IPropertyChangeListener { @@ -152,7 +152,7 @@ /** * {@inheritDoc} - * + * * @since 3.4 */ public bool canHideHyperlinks() { @@ -171,7 +171,7 @@ * @see dwtx.jdt.internal.ui.javaeditor.IHyperlinkControl#install(dwtx.jface.text.ITextViewer) */ public void install(ITextViewer textViewer) { - Assert.isNotNull(textViewer); + Assert.isNotNull(cast(Object)textViewer); fTextViewer= textViewer; fTextViewer.addTextInputListener(this); if ( cast(ITextViewerExtension4)fTextViewer ) @@ -218,7 +218,7 @@ } public void setColor(Color color) { - Assert.isNotNull(fTextViewer); + Assert.isNotNull(cast(Object)fTextViewer); fColor= color; } @@ -238,7 +238,7 @@ private void highlightRegion(IRegion region) { - if (region.equals(fActiveRegion)) + if ((cast(Object)region).opEquals(cast(Object)fActiveRegion)) return; repairRepresentation(); @@ -321,7 +321,7 @@ fActiveRegion= new Region(event.getOffset(), event.getLength()); } fRememberedPosition= null; - + StyledText widget= fTextViewer.getTextWidget(); if (widget !is null && !widget.isDisposed()) { widget.getDisplay().asyncExec(new class() Runnable {
--- a/dwtx/jface/text/hyperlink/HyperlinkManager.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/hyperlink/HyperlinkManager.d Mon Sep 08 00:51:37 2008 +0200 @@ -85,7 +85,17 @@ * hyperlink presenter and no further detector * is consulted. */ - public static const DETECTION_STRATEGY FIRST= new DETECTION_STRATEGY("first"); //$NON-NLS-1$ + private static DETECTION_STRATEGY FIRST_; + public static DETECTION_STRATEGY FIRST(){ + if( FIRST_ is null ){ + synchronized( HyperlinkManager.classinfo ){ + if( FIRST_ is null ){ + FIRST_ = new DETECTION_STRATEGY("first"); //$NON-NLS-1$ + } + } + } + return FIRST_; + } /** * All detected hyperlinks from all detectors are collected @@ -95,7 +105,17 @@ * returns <code>true</code>. * </p> */ - public static const DETECTION_STRATEGY ALL= new DETECTION_STRATEGY("all"); //$NON-NLS-1$ + private static DETECTION_STRATEGY ALL_; + public static DETECTION_STRATEGY ALL(){ + if( ALL_ is null ){ + synchronized( HyperlinkManager.classinfo ){ + if( ALL_ is null ){ + ALL_ = new DETECTION_STRATEGY("all"); //$NON-NLS-1$ + } + } + } + return ALL_; + } /** * All detected hyperlinks from all detectors are collected @@ -106,14 +126,34 @@ * returns <code>true</code>. * </p> */ - public static const DETECTION_STRATEGY LONGEST_REGION_ALL= new DETECTION_STRATEGY("all with same longest region"); //$NON-NLS-1$ + private static DETECTION_STRATEGY LONGEST_REGION_ALL_; + public static DETECTION_STRATEGY LONGEST_REGION_ALL(){ + if( LONGEST_REGION_ALL_ is null ){ + synchronized( HyperlinkManager.classinfo ){ + if( LONGEST_REGION_ALL_ is null ){ + LONGEST_REGION_ALL_ = new DETECTION_STRATEGY("all with same longest region"); //$NON-NLS-1$ + } + } + } + return LONGEST_REGION_ALL_; + } /** * All detected hyperlinks from all detectors are collected * and form all those with the longest region only the first * one is passed to the hyperlink presenter. */ - public static const DETECTION_STRATEGY LONGEST_REGION_FIRST= new DETECTION_STRATEGY("first with longest region"); //$NON-NLS-1$ + private static DETECTION_STRATEGY LONGEST_REGION_FIRST_; + public static DETECTION_STRATEGY LONGEST_REGION_FIRST(){ + if( LONGEST_REGION_FIRST_ is null ){ + synchronized( HyperlinkManager.classinfo ){ + if( LONGEST_REGION_FIRST_ is null ){ + LONGEST_REGION_FIRST_ = new DETECTION_STRATEGY("first with longest region"); //$NON-NLS-1$ + } + } + } + return LONGEST_REGION_FIRST_; + } /** The text viewer on which this hyperlink manager works. */ @@ -156,8 +196,8 @@ * @param eventStateMask the DWT event state mask to activate hyperlink mode */ public void install(ITextViewer textViewer, IHyperlinkPresenter hyperlinkPresenter, IHyperlinkDetector[] hyperlinkDetectors, int eventStateMask) { - Assert.isNotNull(textViewer); - Assert.isNotNull(hyperlinkPresenter); + Assert.isNotNull(cast(Object)textViewer); + Assert.isNotNull(cast(Object)hyperlinkPresenter); fTextViewer= textViewer; fHyperlinkPresenter= hyperlinkPresenter; Assert.isLegal(fHyperlinkPresenter.canShowMultipleHyperlinks() || fDetectionStrategy is FIRST || fDetectionStrategy is LONGEST_REGION_FIRST); @@ -191,10 +231,11 @@ */ public void setHyperlinkDetectors(IHyperlinkDetector[] hyperlinkDetectors) { Assert.isTrue(hyperlinkDetectors !is null && hyperlinkDetectors.length > 0); - if (fHyperlinkDetectors is null) + if (fHyperlinkDetectors is null){ fHyperlinkDetectors= hyperlinkDetectors; + } else { - synchronized (fHyperlinkDetectors) { + synchronized (/+fHyperlinkDetectors+/this) { fHyperlinkDetectors= hyperlinkDetectors; } } @@ -259,7 +300,7 @@ bool canShowMultipleHyperlinks= fHyperlinkPresenter.canShowMultipleHyperlinks(); IRegion region= new Region(offset, 0); List allHyperlinks= new ArrayList(fHyperlinkDetectors.length * 2); - synchronized (fHyperlinkDetectors) { + synchronized (/+fHyperlinkDetectors+/this) { for (int i= 0, length= fHyperlinkDetectors.length; i < length; i++) { IHyperlinkDetector detector= fHyperlinkDetectors[i]; if (detector is null) @@ -285,7 +326,7 @@ return hyperlinks; return [hyperlinks[0]]; } - allHyperlinks.addAll(Arrays.asList(hyperlinks)); + allHyperlinks.addAll(Arrays.asList(arraycast!(Object)(hyperlinks))); } } @@ -298,7 +339,7 @@ while (iter.hasNext()) { IHyperlink hyperlink= cast(IHyperlink)iter.next(); if (hyperlink.getHyperlinkRegion().getLength() < maxLength) - allHyperlinks.remove(hyperlink); + allHyperlinks.remove(cast(Object)hyperlink); } } @@ -496,7 +537,7 @@ if (stateMask is fHyperlinkStateMask) return true; - synchronized (fHyperlinkDetectors) { + synchronized (/+fHyperlinkDetectors+/this) { for (int i= 0; i < fHyperlinkDetectors.length; i++) { if (cast(IHyperlinkDetectorExtension2)fHyperlinkDetectors[i] ) { if (stateMask is (cast(IHyperlinkDetectorExtension2)fHyperlinkDetectors[i]).getStateMask())
--- a/dwtx/jface/text/hyperlink/HyperlinkMessages.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/hyperlink/HyperlinkMessages.d Mon Sep 08 00:51:37 2008 +0200 @@ -43,7 +43,7 @@ static this() { RESOURCE_BUNDLE = ResourceBundle.getBundle( - getImportData!("dwtx.jface.text.HyperlinkMessages.properties")); + getImportData!("dwtx.jface.text.hyperlink.HyperlinkMessages.properties")); } private this() {
--- a/dwtx/jface/text/hyperlink/HyperlinkMessages.properties Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -############################################################################### -# Copyright (c) 2008 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 -############################################################################### - -LinkListInformationControl.unknownLink= Unknown Hyperlink - -MultipleHyperlinkPresenter.clickLinkAfordance =Click link to open - -URLHyperlink.hyperlinkText= Open ''{0}'' in a browser
--- a/dwtx/jface/text/hyperlink/MultipleHyperlinkPresenter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/hyperlink/MultipleHyperlinkPresenter.d Mon Sep 08 00:51:37 2008 +0200 @@ -223,7 +223,7 @@ final TableViewer viewer= new TableViewer(fTable); viewer.setContentProvider(new LinkContentProvider()); viewer.setLabelProvider(new LinkLabelProvider()); - viewer.setInput(fInput); + viewer.setInput(new ArrayWrapperObject( arraycast!(Object)(fInput))); fTable.setSelection(0); registerTableListeners(); @@ -249,11 +249,11 @@ TableItem fLastItem= null; public void mouseMove(MouseEvent e) { - if (fTable.equals(e.getSource())) { + if (fTable.opEquals(e.getSource())) { Object o= fTable.getItem(new Point(e.x, e.y)); if ( cast(TableItem)o ) { TableItem item= cast(TableItem) o; - if (!o.equals(fLastItem)) { + if (!o.opEquals(fLastItem)) { fLastItem= cast(TableItem) o; fTable.setSelection([ fLastItem ]); } else if (e.y < fTable.getItemHeight() / 4) { @@ -290,10 +290,10 @@ if (e.button !is 1) return; - if (fTable.equals(e.getSource())) { + if (fTable.opEquals(e.getSource())) { Object o= fTable.getItem(new Point(e.x, e.y)); TableItem selection= fTable.getSelection()[0]; - if (selection.equals(o)) + if (selection.opEquals(o)) openSelectedLink(); } } @@ -346,7 +346,7 @@ * @see dwtx.jface.text.ITextHoverExtension2#getHoverInfo2(dwtx.jface.text.ITextViewer, dwtx.jface.text.IRegion) */ public Object getHoverInfo2(ITextViewer textViewer, IRegion hoverRegion) { - return fHyperlinks; + return new ArrayWrapperObject( arraycast!(Object)(fHyperlinks)); } /* @@ -540,13 +540,13 @@ protected void computeInformation() { IRegion region= fHover.getHoverRegion(fTextViewer, -1); if (region is null) { - setInformation(null, null); + setInformation(cast(Object)null, cast(Rectangle)null); return; } Rectangle area= JFaceTextUtil.computeArea(region, fTextViewer); if (area is null || area.isEmpty()) { - setInformation(null, null); + setInformation(cast(Object)null, cast(Rectangle)null); return; }
--- a/dwtx/jface/text/hyperlink/URLHyperlink.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/hyperlink/URLHyperlink.d Mon Sep 08 00:51:37 2008 +0200 @@ -55,7 +55,7 @@ */ public this(IRegion region, String urlString) { Assert.isNotNull(urlString); - Assert.isNotNull(region); + Assert.isNotNull(cast(Object)region); fRegion= region; fURLString= urlString; @@ -90,7 +90,7 @@ * @see dwtx.jdt.internal.ui.javaeditor.IHyperlink#getHyperlinkText() */ public String getHyperlinkText() { - return MessageFormat.format(HyperlinkMessages.getString("URLHyperlink.hyperlinkText"), fURLString ); //$NON-NLS-1$ + return MessageFormat.format(HyperlinkMessages.getString("URLHyperlink.hyperlinkText"), stringcast(fURLString) ); //$NON-NLS-1$ } /**
--- a/dwtx/jface/text/hyperlink/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta name="Author" content="IBM"> - <meta name="GENERATOR" content="Eclipse"> - <title>Package-level Javadoc</title> -</head> -<body> -Provides support for detecting and displaying hyperlinks in <tt>ISourceViewer</tt>s. -<p> -<tt>SourceViewer</tt> supports hyperlinked text regions inline in the displayed text. It delegates -the detection and presentation of hyperlinks to <tt>IHyperlinkDetector</tt> and <tt>IHyperlinkPresenter</tt>, respectively. -</p> -<p> -Override the following methods in <tt>SourceViewerConfiguration</tt> to customize the hyperlink behavior of a source viewer: -<ul> - <li><tt>getHyperlinkDetectors()</tt> to specify the set of hyperlink detectors used by the viewer</li> - <li><tt>getHyperlinkPresenter()</tt> to specify the set of hyperlink presenters used by the viewer</li> - <li><tt>getHyperlinkStateMask()</tt> to specify when hyperlinks are activated</li> -</ul> -</p> - -</body> -</html>
--- a/dwtx/jface/text/information/InformationPresenter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/information/InformationPresenter.d Mon Sep 08 00:51:37 2008 +0200 @@ -71,6 +71,10 @@ */ public class InformationPresenter : AbstractInformationControlManager , IInformationPresenter, IInformationPresenterExtension, IWidgetTokenKeeper, IWidgetTokenKeeperExtension { + alias AbstractInformationControlManager.install install; + public override void showInformation(){ + super.showInformation(); + } /** * Priority of the info controls managed by this information presenter. @@ -298,7 +302,7 @@ if (provider is null) fProviders.remove(contentType); else - fProviders.put(contentType, provider); + fProviders.put(contentType, cast(Object)provider); } /* @@ -351,9 +355,9 @@ info= extension.getInformation2(fTextViewer, subject); } else { // backward compatibility code - info= provider.getInformation(fTextViewer, subject); + info= stringcast(provider.getInformation(fTextViewer, subject)); } - + if ( cast(IInformationProviderExtension2)provider ) setCustomInformationControlCreator((cast(IInformationProviderExtension2) provider).getInformationPresenterControlCreator()); else @@ -378,7 +382,7 @@ start= widgetRegion.getOffset(); end= widgetRegion.getOffset() + widgetRegion.getLength(); } - + StyledText styledText= fTextViewer.getTextWidget(); Rectangle bounds; if (end > 0 && start < end) @@ -387,7 +391,7 @@ Point loc= styledText.getLocationAtOffset(start); bounds= new Rectangle(loc.x, loc.y, 0, styledText.getLineHeight(start)); } - + return bounds; }
--- a/dwtx/jface/text/information/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta name="Author" content="IBM"> - <meta name="GENERATOR" content="Mozilla/4.76 [en] (Windows NT 5.0; U) [Netscape]"> - <title>Package-level Javadoc</title> -</head> -<body> -Provides an information provider add-on for an <tt>ITextViewer</tt>. -An information provider presents information for a certain subject in a -specific information control. An information control usually is a floating -window. -<h2> -Package Specification</h2> -<tt>IInformationPresenter</tt> defines the concept of an information provider. -It collaborates with content type specific information providers (<tt>IInformationProvider</tt>) -which determine for a certain offset in a text viewer an information subject -and the information available about this subject.. The package contains -a default implementation of <tt>IInformationPresenter</tt> (<tt>InformationPresenter</tt>). -</body> -</html>
--- a/dwtx/jface/text/link/ILinkedModeListener.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/link/ILinkedModeListener.d Mon Sep 08 00:51:37 2008 +0200 @@ -38,27 +38,27 @@ public interface ILinkedModeListener { /** Flag to <code>leave</code> specifying no special action. */ - int NONE= 0; + static const int NONE= 0; /** * Flag to <code>leave</code> specifying that all nested modes should * exit. */ - int EXIT_ALL= 1 << 0; + static const int EXIT_ALL= 1 << 0; /** * Flag to <code>leave</code> specifying that the caret should be moved to * the exit position. */ - int UPDATE_CARET= 1 << 1; + static const int UPDATE_CARET= 1 << 1; /** * Flag to <code>leave</code> specifying that a UI of a parent mode should * select the current position. */ - int SELECT= 1 << 2; + static const int SELECT= 1 << 2; /** * Flag to <code>leave</code> specifying that document content outside of * a linked position was modified. */ - int EXTERNAL_MODIFICATION= 1 << 3; + static const int EXTERNAL_MODIFICATION= 1 << 3; /** * The leave event occurs when linked is left.
--- a/dwtx/jface/text/link/LinkedModeManager.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/link/LinkedModeManager.d Mon Sep 08 00:51:37 2008 +0200 @@ -75,8 +75,17 @@ } /** Global map from documents to managers. */ - private static Map fgManagers= new HashMap(); - + private static Map fgManagers_; + private static Map fgManagers(){ + if( fgManagers_ is null ){ + synchronized( LinkedModeManager.classinfo ){ + if( fgManagers_ is null ){ + fgManagers_= new HashMap(); + } + } + } + return fgManagers_; + } /** * Returns whether there exists a <code>LinkedModeManager</code> on <code>document</code>. * @@ -84,7 +93,7 @@ * @return <code>true</code> if there exists a <code>LinkedModeManager</code> on <code>document</code>, <code>false</code> otherwise */ public static bool hasManager(IDocument document) { - return fgManagers.get(document) !is null; + return fgManagers.get(cast(Object)document) !is null; } /** @@ -117,7 +126,7 @@ Set mgrs= new HashSet(); LinkedModeManager mgr= null; for (int i= 0; i < documents.length; i++) { - mgr= cast(LinkedModeManager) fgManagers.get(documents[i]); + mgr= cast(LinkedModeManager) fgManagers.get(cast(Object)documents[i]); if (mgr !is null) mgrs.add(mgr); } @@ -135,7 +144,7 @@ mgr= new LinkedModeManager(); for (int i= 0; i < documents.length; i++) - fgManagers.put(documents[i], mgr); + fgManagers.put(cast(Object)documents[i], mgr); return mgr; } @@ -146,14 +155,19 @@ * @param document the document whose <code>LinkedModeManager</code> should be canceled */ public static void cancelManager(IDocument document) { - LinkedModeManager mgr= cast(LinkedModeManager) fgManagers.get(document); + LinkedModeManager mgr= cast(LinkedModeManager) fgManagers.get(cast(Object)document); if (mgr !is null) mgr.closeAllEnvironments(); } /** The hierarchy of environments managed by this manager. */ - private Stack fEnvironments= new Stack(); - private Listener fListener= new Listener(); + private Stack fEnvironments; + private Listener fListener; + + this(){ + fEnvironments= new Stack(); + fListener= new Listener(); + } /** * Notify the manager about a leaving model. @@ -189,7 +203,7 @@ private void removeManager() { for (Iterator it= fgManagers.keySet().iterator(); it.hasNext();) { IDocument doc= cast(IDocument) it.next(); - if (fgManagers.get(doc) is this) + if (fgManagers.get(cast(Object)doc) is this) it.remove(); } }
--- a/dwtx/jface/text/link/LinkedModeModel.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/link/LinkedModeModel.d Mon Sep 08 00:51:37 2008 +0200 @@ -24,15 +24,8 @@ import dwt.dwthelper.utils; - import dwtx.dwtxhelper.Collection; - - - - - - import dwtx.core.runtime.Assert; import dwtx.jface.text.BadLocationException; import dwtx.jface.text.BadPositionCategoryException; @@ -42,7 +35,7 @@ import dwtx.jface.text.IDocumentListener; import dwtx.jface.text.IPositionUpdater; import dwtx.jface.text.Position; -import dwtx.jface.text.IDocumentExtension.IReplace; +import dwtx.jface.text.IDocumentExtension; import dwtx.text.edits.MalformedTreeException; import dwtx.text.edits.TextEdit; @@ -142,7 +135,7 @@ * Encapsulates the edition triggered by a change to a linking position. Can * be applied to a document as a whole. */ - private class Replace : IReplace { + private class Replace : IDocumentExtension.IReplace { /** The edition to apply on a document. */ private TextEdit fEdit; @@ -240,7 +233,7 @@ // edit all documents for (Iterator it2= result.keySet().iterator(); it2.hasNext(); ) { IDocument doc= cast(IDocument) it2.next(); - TextEdit edit= cast(TextEdit) result.get(doc); + TextEdit edit= cast(TextEdit) result.get(cast(Object)doc); Replace replace= new Replace(edit); // apply the edition, either as post notification replace @@ -262,13 +255,13 @@ } /** The set of linked position groups. */ - private const List fGroups= new ArrayList(); + private const List fGroups; /** The set of documents spanned by this group. */ - private const Set fDocuments= new HashSet(); + private const Set fDocuments; /** The position updater for linked positions. */ - private const IPositionUpdater fUpdater= new InclusivePositionUpdater(getCategory()); + private const IPositionUpdater fUpdater; /** The document listener on the documents affected by this model. */ - private const DocumentListener fDocumentListener= new DocumentListener(); + private const DocumentListener fDocumentListener; /** The parent model for a hierarchical set up, or <code>null</code>. */ private LinkedModeModel fParentEnvironment; /** @@ -285,14 +278,14 @@ /** <code>true</code> when this model is changing documents. */ private bool fIsChanging= false; /** The linked listeners. */ - private const List fListeners= new ArrayList(); + private const List fListeners; /** Flag telling whether we have exited: */ private bool fIsActive= true; /** * The sequence of document positions as we are going to iterate through * them. */ - private List fPositionSequence= new ArrayList(); + private List fPositionSequence; /** * Whether we are in the process of editing documents (set by <code>Replace</code>, @@ -379,8 +372,8 @@ * @param document the new document */ private void manageDocument(IDocument document) { - if (!fDocuments.contains(document)) { - fDocuments.add(document); + if (!fDocuments.contains(cast(Object)document)) { + fDocuments.add(cast(Object)document); document.addPositionCategory(getCategory()); document.addPositionUpdater(fUpdater); document.addDocumentListener(fDocumentListener); @@ -438,6 +431,14 @@ * @since 3.1 */ public this() { + // DWT inst init + fGroups= new ArrayList(); + fDocuments= new HashSet(); + fUpdater= new InclusivePositionUpdater(getCategory()); + fDocumentListener= new DocumentListener(); + fListeners= new ArrayList(); + fPositionSequence= new ArrayList(); + } /** @@ -556,9 +557,9 @@ Set docs= new HashSet(); for (Iterator it= fGroups.iterator(); it.hasNext(); ) { LinkedPositionGroup group= cast(LinkedPositionGroup) it.next(); - docs.addAll(Arrays.asList(group.getDocuments())); + docs.addAll(Arrays.asList(arraycast!(Object)(group.getDocuments()))); } - return (IDocument[]) docs.toArray(new IDocument[docs.size()]); + return arraycast!(IDocument)( docs.toArray()); } /** @@ -652,9 +653,9 @@ * @param listener the new listener */ public void addLinkingListener(ILinkedModeListener listener) { - Assert.isNotNull(listener); - if (!fListeners.contains(listener)) - fListeners.add(listener); + Assert.isNotNull(cast(Object)listener); + if (!fListeners.contains(cast(Object)listener)) + fListeners.add(cast(Object)listener); } /** @@ -664,7 +665,7 @@ * @param listener the new listener */ public void removeLinkingListener(ILinkedModeListener listener) { - fListeners.remove(listener); + fListeners.remove(cast(Object)listener); } /**
--- a/dwtx/jface/text/link/LinkedModeUI.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/link/LinkedModeUI.d Mon Sep 08 00:51:37 2008 +0200 @@ -100,17 +100,47 @@ * Constant indicating that this UI should never cycle from the last * position to the first and vice versa. */ - public static const Object CYCLE_NEVER= new Object(); + public static Object CYCLE_NEVER_; + public static Object CYCLE_NEVER(){ + if( CYCLE_NEVER_ is null ){ + synchronized( LinkedModeUI.classinfo ){ + if( CYCLE_NEVER_ is null ){ + CYCLE_NEVER_ = new Object(); + } + } + } + return CYCLE_NEVER_; + } /** * Constant indicating that this UI should always cycle from the last * position to the first and vice versa. */ - public static const Object CYCLE_ALWAYS= new Object(); + public static Object CYCLE_ALWAYS_; + public static Object CYCLE_ALWAYS(){ + if( CYCLE_ALWAYS_ is null ){ + synchronized( LinkedModeUI.classinfo ){ + if( CYCLE_ALWAYS_ is null ){ + CYCLE_ALWAYS_ = new Object(); + } + } + } + return CYCLE_ALWAYS_; + } /** * Constant indicating that this UI should cycle from the last position to * the first and vice versa if its model is not nested. */ - public static const Object CYCLE_WHEN_NO_PARENT= new Object(); + public static Object CYCLE_WHEN_NO_PARENT_; + public static Object CYCLE_WHEN_NO_PARENT(){ + if( CYCLE_WHEN_NO_PARENT_ is null ){ + synchronized( LinkedModeUI.classinfo ){ + if( CYCLE_WHEN_NO_PARENT_ is null ){ + CYCLE_WHEN_NO_PARENT_ = new Object(); + } + } + } + return CYCLE_WHEN_NO_PARENT_; + } /** * Listener that gets notified when the linked mode UI switches its focus position. @@ -192,7 +222,7 @@ * @param viewer the viewer */ public this(ITextViewer viewer) { - Assert.isNotNull(viewer); + Assert.isNotNull(cast(Object)viewer); fTextViewer= viewer; } @@ -332,7 +362,7 @@ // focus away. StyledText text; - final ITextViewer viewer; + ITextViewer viewer; Display display; if (fCurrentTarget is null || (text= fCurrentTarget.fWidget) is null @@ -345,21 +375,19 @@ else { // Post in UI thread since the assistant popup will only get the focus after we lose it. - display.asyncExec(new class() Runnable { - public void run() { - if (fIsActive && cast(IEditingSupportRegistry)viewer ) { - IEditingSupport[] helpers= (cast(IEditingSupportRegistry) viewer).getRegisteredSupports(); - for (int i= 0; i < helpers.length; i++) { - if (helpers[i].ownsFocusShell()) - return; - } + display.asyncExec(dgRunnable( (ITextViewer viewer_) { + if (fIsActive && cast(IEditingSupportRegistry)viewer_ ) { + IEditingSupport[] helpers= (cast(IEditingSupportRegistry) viewer_).getRegisteredSupports(); + for (int i= 0; i < helpers.length; i++) { + if (helpers[i].ownsFocusShell()) + return; } + } - // else - leave(ILinkedModeListener.EXIT_ALL); + // else + leave(ILinkedModeListener.EXIT_ALL); - } - }); + }, viewer )); } } @@ -587,23 +615,23 @@ /* Our team of event listeners */ /** The shell listener. */ - private Closer fCloser= new Closer(); + private Closer fCloser; /** The linked mode listener. */ - private ILinkedModeListener fLinkedListener= new ExitListener(); + private ILinkedModeListener fLinkedListener; /** The selection listener. */ - private MySelectionListener fSelectionListener= new MySelectionListener(); + private MySelectionListener fSelectionListener; /** The content assist listener. */ - private ProposalListener fProposalListener= new ProposalListener(); + private ProposalListener fProposalListener; /** * The document listener. * @since 3.1 */ - private IDocumentListener fDocumentListener= new DocumentListener(); + private IDocumentListener fDocumentListener; /** The last caret position, used by fCaretListener. */ - private const Position fCaretPosition= new Position(0, 0); + private const Position fCaretPosition; /** The exit policy to control custom exit behavior */ - private IExitPolicy fExitPolicy= new NullExitPolicy(); + private IExitPolicy fExitPolicy; /** The current frame position shown in the UI, or <code>null</code>. */ private LinkedPosition fFramePosition; /** The last visited position, used for undo / redo. */ @@ -615,28 +643,29 @@ /** State indicator to prevent multiple invocation of leave. */ private bool fIsActive= false; /** The position updater for the exit position. */ - private IPositionUpdater fPositionUpdater= new DefaultPositionUpdater(getCategory()); + private IPositionUpdater fPositionUpdater; /** Whether to show context info. */ private bool fDoContextInfo= false; /** Whether we have begun a compound change, but not yet closed. */ private bool fHasOpenCompoundChange= false; /** The position listener. */ - private ILinkedModeUIFocusListener fPositionListener= new EmtpyFocusListener(); - private IAutoEditStrategy fAutoEditVetoer= new class() IAutoEditStrategy { + private ILinkedModeUIFocusListener fPositionListener; + private IAutoEditStrategy fAutoEditVetoer; + private void fAutoEditVetoer_init(){ + fAutoEditVetoer = new class() IAutoEditStrategy { + /* + * @see dwtx.jface.text.IAutoEditStrategy#customizeDocumentCommand(dwtx.jface.text.IDocument, dwtx.jface.text.DocumentCommand) + */ + public void customizeDocumentCommand(IDocument document, DocumentCommand command) { + // invalidate the change to ensure that the change is performed on the document only. + if (fModel.anyPositionContains(command.offset)) { + command.doit= false; + command.caretOffset= command.offset + command.length; + } - /* - * @see dwtx.jface.text.IAutoEditStrategy#customizeDocumentCommand(dwtx.jface.text.IDocument, dwtx.jface.text.DocumentCommand) - */ - public void customizeDocumentCommand(IDocument document, DocumentCommand command) { - // invalidate the change to ensure that the change is performed on the document only. - if (fModel.anyPositionContains(command.offset)) { - command.doit= false; - command.caretOffset= command.offset + command.length; } - - } - }; - + }; + } /** Whether this UI is in simple highlighting mode or not. */ private bool fSimple; @@ -647,6 +676,19 @@ */ private bool fIsColoredLabelsSupportEnabled= false; + private this(){ + fCloser= new Closer(); + fLinkedListener= new ExitListener(); + fSelectionListener= new MySelectionListener(); + fProposalListener= new ProposalListener(); + fDocumentListener= new DocumentListener(); + fCaretPosition= new Position(0, 0); + fExitPolicy= new NullExitPolicy(); + fPositionUpdater= new DefaultPositionUpdater(getCategory()); + fPositionListener= new EmtpyFocusListener(); + fAutoEditVetoer_init(); + } + /** * Creates a new UI on the given model and the set of viewers. The model * must provide a tab stop sequence with a non-empty list of tab stops. @@ -656,6 +698,7 @@ * UI should act */ public this(LinkedModeModel model, LinkedModeUITarget[] targets) { + this(); constructor(model, targets); } @@ -666,6 +709,7 @@ * @param viewer the viewer upon which the linked mode UI should act */ public this(LinkedModeModel model, ITextViewer viewer) { + this(); constructor(model, [new EmptyTarget(viewer)]); } @@ -677,6 +721,7 @@ * UI should act */ public this(LinkedModeModel model, ITextViewer[] viewers) { + this(); LinkedModeUITarget[] array= new LinkedModeUITarget[viewers.length]; for (int i= 0; i < array.length; i++) { array[i]= new EmptyTarget(viewers[i]); @@ -691,6 +736,7 @@ * @param target the target upon which the linked mode UI should act */ public this(LinkedModeModel model, LinkedModeUITarget target) { + this(); constructor(model, [target]); } @@ -703,7 +749,7 @@ */ private void constructor(LinkedModeModel model, LinkedModeUITarget[] targets) { Assert.isNotNull(model); - Assert.isNotNull(targets); + //Assert.isNotNull(targets); Assert.isTrue(targets.length > 0); Assert.isTrue(model.getTabStopSequence().size() > 0); @@ -799,7 +845,7 @@ */ public void setCyclingMode(Object mode) { if (mode !is CYCLE_ALWAYS && mode !is CYCLE_NEVER && mode !is CYCLE_WHEN_NO_PARENT) - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); if (mode is CYCLE_ALWAYS || mode is CYCLE_WHEN_NO_PARENT && !fModel.isNested()) fIterator.setCycling(true); @@ -847,7 +893,7 @@ fAssistant.hidePossibleCompletions(); } - private void switchPosition(LinkedPosition pos, bool select, bool showProposals) { + private void switchPosition(LinkedPosition pos, bool select_, bool showProposals) { Assert.isNotNull(pos); if (pos.equals(fFramePosition)) return; @@ -865,7 +911,7 @@ switchViewer(oldDoc, newDoc, pos); fFramePosition= pos; - if (select) + if (select_) select(); if (fFramePosition is fExitPosition && !fIterator.isCycling()) leave(ILinkedModeListener.NONE); @@ -892,9 +938,9 @@ IAnnotationModel model= sv.getAnnotationModel(); if ( cast(IAnnotationModelExtension)model ) { IAnnotationModelExtension ext= cast(IAnnotationModelExtension) model; - IAnnotationModel ourModel= ext.getAnnotationModel(getUniqueKey()); + IAnnotationModel ourModel= ext.getAnnotationModel(stringcast(getUniqueKey())); if (ourModel is null) { - ext.addAnnotationModel(getUniqueKey(), lpa); + ext.addAnnotationModel(stringcast(getUniqueKey()), lpa); } } } @@ -908,7 +954,7 @@ IAnnotationModel model= sv.getAnnotationModel(); if ( cast(IAnnotationModelExtension)model ) { IAnnotationModelExtension ext= cast(IAnnotationModelExtension) model; - ext.removeAnnotationModel(getUniqueKey()); + ext.removeAnnotationModel(stringcast(getUniqueKey())); } } } @@ -959,7 +1005,7 @@ private void connect() { Assert.isNotNull(fCurrentTarget); ITextViewer viewer= fCurrentTarget.getViewer(); - Assert.isNotNull(viewer); + Assert.isNotNull(cast(Object)viewer); fCurrentTarget.fWidget= viewer.getTextWidget(); if (fCurrentTarget.fWidget is null) leave(ILinkedModeListener.EXIT_ALL); @@ -1072,10 +1118,10 @@ String[] partitionings= ext.getPartitionings(); Set contentTypes= new HashSet(20); for (int i= 0; i < partitionings.length; i++) { - contentTypes.addAll(Arrays.asList(ext.getLegalContentTypes(partitionings[i]))); + contentTypes.addAll(Arrays.asList(stringcast(ext.getLegalContentTypes(partitionings[i])))); } contentTypes.add(IDocument.DEFAULT_CONTENT_TYPE); - return (String[]) contentTypes.toArray(new String[contentTypes.size()]); + return stringcast( contentTypes.toArray()); } return document.getLegalContentTypes(); } @@ -1097,13 +1143,13 @@ } private String getUniqueKey() { - return "linked.annotationmodelkey."+toString(); //$NON-NLS-1$ + return "linked.annotationmodelkey."~toString(); //$NON-NLS-1$ } private void disconnect() { Assert.isNotNull(fCurrentTarget); ITextViewer viewer= fCurrentTarget.getViewer(); - Assert.isNotNull(viewer); + Assert.isNotNull(cast(Object)viewer); viewer.getDocument().removeDocumentListener(fDocumentListener); @@ -1135,7 +1181,7 @@ redraw(); } - void leave(final int flags) { + void leave(int flags) { if (!fIsActive) return; fIsActive= false; @@ -1180,37 +1226,35 @@ for (int i= 0; i < fTargets.length; i++) { IDocument doc= fTargets[i].getViewer().getDocument(); if (doc !is null) - docs.add(doc); + docs.add(cast(Object)doc); } fModel.stopForwarding(flags); - Runnable runnable= new class() Runnable { - public void run() { - if (fExitPosition !is null) - fExitPosition.getDocument().removePosition(fExitPosition); + Runnable runnable= dgRunnable( (int flags_){ + if (fExitPosition !is null) + fExitPosition.getDocument().removePosition(fExitPosition); - for (Iterator iter = docs.iterator(); iter.hasNext(); ) { - IDocument doc= cast(IDocument) iter.next(); - doc.removePositionUpdater(fPositionUpdater); - bool uninstallCat= false; - String[] cats= doc.getPositionCategories(); - for (int j= 0; j < cats.length; j++) { - if (getCategory().equals(cats[j])) { - uninstallCat= true; - break; - } + for (Iterator iter = docs.iterator(); iter.hasNext(); ) { + IDocument doc= cast(IDocument) iter.next(); + doc.removePositionUpdater(fPositionUpdater); + bool uninstallCat= false; + String[] cats= doc.getPositionCategories(); + for (int j= 0; j < cats.length; j++) { + if (getCategory().equals(cats[j])) { + uninstallCat= true; + break; } - if (uninstallCat) - try { - doc.removePositionCategory(getCategory()); - } catch (BadPositionCategoryException e) { - // ignore - } } - fModel.exit(flags); + if (uninstallCat) + try { + doc.removePositionCategory(getCategory()); + } catch (BadPositionCategoryException e) { + // ignore + } } - }; + fModel.exit(flags_); + }, flags ); // remove positions (both exit positions AND linked positions in the // model) asynchronously to make sure that the annotation painter @@ -1278,7 +1322,7 @@ * @param listener the new listener, never <code>null</code>. */ protected void setPositionListener(ILinkedModeUIFocusListener listener) { - Assert.isNotNull(listener); + Assert.isNotNull(cast(Object)listener); fPositionListener= listener; }
--- a/dwtx/jface/text/link/LinkedPosition.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/link/LinkedPosition.d Mon Sep 08 00:51:37 2008 +0200 @@ -41,7 +41,7 @@ * @since 3.0 */ public class LinkedPosition : Position { - + alias Position.overlapsWith overlapsWith; /** The document this position belongs to. */ private IDocument fDocument; private int fSequenceNumber; @@ -56,7 +56,7 @@ */ public this(IDocument document, int offset, int length, int sequence) { super(offset, length); - Assert.isNotNull(document); + Assert.isNotNull(cast(Object)document); fDocument= document; fSequenceNumber= sequence; } @@ -188,6 +188,7 @@ * @see dwtx.jface.text.Position#hashCode() */ public override hash_t toHash() { - return fDocument.toHash() | super.toHash() | fSequenceNumber; + alias .toHash toHash; + return (cast(Object)fDocument).toHash() | super.toHash() | fSequenceNumber; } }
--- a/dwtx/jface/text/link/LinkedPositionAnnotations.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/link/LinkedPositionAnnotations.d Mon Sep 08 00:51:37 2008 +0200 @@ -60,11 +60,16 @@ private Annotation fFocusAnnotation= null; private Annotation fExitAnnotation= null; - private const Map fGroupAnnotations= new HashMap(); - private const Map fTargetAnnotations= new HashMap(); - private Position[] fTargets= new Position[0]; + private const Map fGroupAnnotations; + private const Map fTargetAnnotations; + private Position[] fTargets; private LinkedPosition fExitPosition= null; + public this(){ + fGroupAnnotations= new HashMap(); + fTargetAnnotations= new HashMap(); + } + /** * Sets the position that should be highlighted as the focus position, i.e. * as the position whose changes are propagated to all its linked positions @@ -134,7 +139,7 @@ } fGroupAnnotations.values().removeAll(toRemove); - replaceAnnotations((Annotation[]) toRemove.toArray(new Annotation[0]), toAdd, false); + replaceAnnotations(arraycast!(Annotation)( toRemove.toArray()), toAdd, false); } /** @@ -168,7 +173,7 @@ } fTargetAnnotations.values().removeAll(toRemove); - replaceAnnotations((Annotation[]) toRemove.toArray(new Annotation[0]), toAdd, false); + replaceAnnotations(arraycast!(Annotation)( toRemove.toArray()), toAdd, false); } /** @@ -199,12 +204,12 @@ else group= new ArrayList(); - if (position is null || !fDocument.equals(position.getDocument())) + if (position is null || !(cast(Object)fDocument).opEquals(cast(Object)position.getDocument())) // position is not valid if not in this document position= null; LinkedPosition exit= fExitPosition; - if (exit is null || !fDocument.equals(exit.getDocument())) + if (exit is null || !(cast(Object)fDocument).opEquals(cast(Object)exit.getDocument())) // position is not valid if not in this document exit= null; @@ -243,7 +248,7 @@ private void prune(List list) { for (Iterator iter= list.iterator(); iter.hasNext();) { LinkedPosition pos= cast(LinkedPosition) iter.next(); - if (!pos.getDocument().equals(fDocument)) + if (!(cast(Object)pos.getDocument()).opEquals(cast(Object)fDocument)) iter.remove(); } }
--- a/dwtx/jface/text/link/LinkedPositionGroup.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/link/LinkedPositionGroup.d Mon Sep 08 00:51:37 2008 +0200 @@ -22,15 +22,9 @@ import dwtx.jface.text.link.LinkedPositionAnnotations; // packageimport import dwtx.jface.text.link.ProposalPosition; // packageimport - import dwt.dwthelper.utils; - import dwtx.dwtxhelper.Collection; - - - - - +import tango.text.convert.Format; import dwtx.core.runtime.Assert; import dwtx.jface.text.BadLocationException; @@ -44,7 +38,6 @@ import dwtx.text.edits.ReplaceEdit; import dwtx.text.edits.TextEdit; - /** * A group of positions in multiple documents that are simultaneously modified - * if one gets edited, all other positions in a group are edited the same way. @@ -71,7 +64,7 @@ /* members */ /** The linked positions of this group. */ - private const List fPositions= new LinkedList(); + private const List fPositions; /** Whether we are sealed or not. */ private bool fIsSealed= false; /** @@ -91,6 +84,10 @@ */ private IRegion fLastRegion; + this(){ + fPositions= new LinkedList(); + } + /** * Adds a position to this group. The document region defined by the * position must contain the same content (and thus have the same length) as @@ -142,9 +139,9 @@ String groupContent= groupPosition.getContent(); String positionContent= position.getContent(); if (!groupContent.equals(positionContent)) - throw new BadLocationException( - "First position: '" + groupContent + "' at " + groupPosition.getOffset() + //$NON-NLS-1$ //$NON-NLS-2$ - ", this position: '" + positionContent + "' at " + position.getOffset()); //$NON-NLS-1$ //$NON-NLS-2$ + throw new BadLocationException(Format( "First position: '{}' at {}, this position: '{}' at {}", + groupContent, groupPosition.getOffset(), //$NON-NLS-1$ //$NON-NLS-2$ + positionContent, position.getOffset())); //$NON-NLS-1$ //$NON-NLS-2$ } } @@ -216,7 +213,7 @@ * @since 3.1 */ private bool overlapsOrTouches(LinkedPosition position, DocumentEvent event) { - return position.getDocument().equals(event.getDocument()) && position.getOffset() <= event.getOffset() + event.getLength() && position.getOffset() + position.getLength() >= event.getOffset(); + return (cast(Object)position.getDocument()).opEquals(cast(Object)event.getDocument()) && position.getOffset() <= event.getOffset() + event.getLength() && position.getOffset() + position.getLength() >= event.getOffset(); } /** @@ -257,10 +254,10 @@ if (p is fLastPosition || p.isDeleted()) continue; // don't re-update the origin of the change - List edits= cast(List) map.get(p.getDocument()); + List edits= cast(List) map.get(cast(Object)p.getDocument()); if (edits is null) { edits= new ArrayList(); - map.put(p.getDocument(), edits); + map.put(cast(Object)p.getDocument(), cast(Object)edits); } edits.add(new ReplaceEdit(p.getOffset() + relativeOffset, length, text)); @@ -270,13 +267,13 @@ for (Iterator it= map.keySet().iterator(); it.hasNext();) { IDocument d= cast(IDocument) it.next(); TextEdit edit= new MultiTextEdit(0, d.getLength()); - edit.addChildren((TextEdit[]) (cast(List) map.get(d)).toArray(new TextEdit[0])); - map.put(d, edit); + edit.addChildren(arraycast!(TextEdit)( (cast(List) map.get(cast(Object)d)).toArray())); + map.put(cast(Object)d, edit); } return map; } catch (MalformedTreeException x) { - // may happen during undo, as LinkedModeModel does not know + // may happen during undo, as LinkedModeModel does not know // that the changes technically originate from a parent environment // if this happens, post notification changes are not accepted anyway and // we can simply return null - any changes will be undone by the undo @@ -393,7 +390,7 @@ public bool isEmpty() { return fPositions.size() is 0; } - + /** * Returns whether this group contains any positions. * @@ -412,7 +409,7 @@ * @return the positions of this group in no particular order */ public LinkedPosition[] getPositions() { - return (LinkedPosition[]) fPositions.toArray(new LinkedPosition[0]); + return arraycast!(LinkedPosition) (fPositions.toArray()); } /** @@ -424,7 +421,7 @@ bool contains(Position position) { for (Iterator it= fPositions.iterator(); it.hasNext(); ) { LinkedPosition p= cast(LinkedPosition) it.next(); - if (position.equals(p)) + if (position.opEquals(p)) return true; } return false;
--- a/dwtx/jface/text/link/ProposalPosition.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/link/ProposalPosition.d Mon Sep 08 00:51:37 2008 +0200 @@ -78,7 +78,7 @@ private ICompletionProposal[] copy(ICompletionProposal[] proposals) { if (proposals !is null) { ICompletionProposal[] copy= new ICompletionProposal[proposals.length]; - System.arraycopy(proposals, 0, copy, 0, proposals.length); + SimpleType!(ICompletionProposal).arraycopy(proposals, 0, copy, 0, proposals.length); return copy; } return null; @@ -87,9 +87,9 @@ /* * @see java.lang.Object#equals(java.lang.Object) */ - public bool equals(Object o) { + public override int opEquals(Object o) { if ( cast(ProposalPosition)o ) { - if (super.equals(o)) { + if (super.opEquals(o)) { return Arrays.equals(fProposals, (cast(ProposalPosition)o).fProposals); } } @@ -111,6 +111,6 @@ * @see dwtx.jdt.internal.ui.text.link.LinkedPosition#hashCode() */ public override hash_t toHash() { - return super.toHash() | (fProposals is null ? 0 : fProposals.toHash()); + return super.toHash() | (fProposals is null ? 0 : (cast(hash_t)fProposals.ptr)/+.toHash()+/); } }
--- a/dwtx/jface/text/link/TabStopIterator.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/link/TabStopIterator.d Mon Sep 08 00:51:37 2008 +0200 @@ -24,13 +24,8 @@ import dwt.dwthelper.utils; - import dwtx.dwtxhelper.Collection; - - - - -import java.util.NoSuchElementException; +import tango.core.Exception; import dwtx.core.runtime.Assert; import dwtx.jface.text.Position; @@ -70,7 +65,17 @@ } /** The comparator to sort the list of positions. */ - private static const Comparator fComparator= new SequenceComparator(); + private static Comparator fComparator_; + private static Comparator fComparator(){ + if( fComparator_ is null ){ + synchronized( TabStopIterator.classinfo ){ + if( fComparator_ is null ){ + fComparator_ = new SequenceComparator(); + } + } + } + return fComparator_; + } /** The iteration sequence. */ private const ArrayList fList; @@ -82,7 +87,7 @@ private bool fIsCycling= false; this(List positionSequence) { - Assert.isNotNull(positionSequence); + Assert.isNotNull(cast(Object)positionSequence); fList= new ArrayList(positionSequence); Collections.sort(fList, fComparator); fSize= fList.size(); @@ -192,13 +197,13 @@ LinkedPosition next(LinkedPosition current) { if (!hasNext(current)) - throw new NoSuchElementException(); + throw new NoSuchElementException(null); return cast(LinkedPosition) fList.get(fIndex= getNextIndex(current)); } LinkedPosition previous(LinkedPosition current) { if (!hasPrevious(current)) - throw new NoSuchElementException(); + throw new NoSuchElementException(null); return cast(LinkedPosition) fList.get(fIndex= getPreviousIndex(current)); } @@ -224,6 +229,6 @@ } LinkedPosition[] getPositions() { - return (LinkedPosition[]) fList.toArray(new LinkedPosition[fSize]); + return arraycast!(LinkedPosition)( fList.toArray()); } }
--- a/dwtx/jface/text/link/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN"> -<html> -<head> - <meta content="text/html; charset=iso-8859-1" - http-equiv="Content-Type"> - <meta content="IBM" name="Author"> - <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" - name="GENERATOR"> - <title>Linked Position Infrastructure</title> -</head> -<body> -Application programming interfaces for interaction -with the Eclipse text editor's linked position support. -<h2>Linked Position Infrastructure</h2> -<h3>package <code>org.eclipse.jface.text.link</code></h3> -The Linked Position Infrastructure lets one set up a mode in an editor -in which regions in a document (or several documents) are <em>linked</em>, -i.e. editions -of one linked position will be reflected in the others. -<h4>Classes</h4> -<ul> - <li><code>LinkedPositionGroup</code>: a set of linked positions. Add -positions to a group using the <code>addPosition</code> method. See <code>LinkedPosition</code> and <code>ProposalPosition</code> -for a position type that lets one attach <code>ICompletionProposal</code>s to -be shown when the position is hit.</li> - <li><code>LinkedModeModel</code>: umbrellas several <code>LinkedPositionGroup</code>s, -e.g. in a template that has several groups of linked positions. Handles -the forwarding of updates received via an <code>IDocumentListener</code>. Add <code>LinkedPositionGroup</code>s -to -an model using the <code>addGroup</code> method. Existence of a <code>LinkedModeModel </code>can be -tested by one of the static methods.<br> - </li> - <li><code>LinkedModeUI</code>: The UI for linked mode (for one -model, to be precise). Monitors key etc. activity, monitors exit -conditions, creates a painter etc. <br> -Properties: - <ul> - <li><b>cycling mode</b> (whether to jump to the first position -after the last): either of <code>CYCLE_ALWAYS</code>, <code>CYCLE_NEVER</code> -and <code>CYCLE_WHEN_NO_PARENT</code> (default).</li> - <li><b>exit position</b>: where to jump upon leaving the linked -mode (e.g. using Enter, or Tab from the last position when not -cycling). Set <code>isTabStop</code> to <code>true</code> if tabbing -should stop over when cycling.</li> - <li><span style="font-weight: bold;">position listener</span>: -extending classes may register a position listener which will get -notified whenever -the focus position changes. An example is <code>org.eclipse.ui.texteditor.link.EditorLinkedModeUI.EditorHistoryUpdater</code> -which will store the edit location in the editor navigation history.</li> - </ul> - </li> - -</ul> -<h4>Example</h4> -<pre> - IDocument doc1, doc2; - ITextViewer viewer1, viewer2; - - /* create groups - this step is independent of the linked mode */ - LinkedPositionGroup group1= new LinkedPositionGroup(); - group1.addPosition(new LinkedPosition(doc1, 3, 4)); - group1.addPosition(new LinkedPosition(doc1, 7, 8)); - - LinkedPositionGroup group2= new LinkedPositionGroup(); - group2.addPosition(new LinkedPosition(doc1, 15, 25)); - group2.addPosition(new LinkedPosition(doc2, 0, 10)); - - /* set up linked mode */ - LinkedModeModel model= new LinkedModeModel(); - model.addGroup(group1); - model.addGroup(group2); - model.forceInstall(); - - /* create UI */ - LinkedModeUI ui= new LinkedModeUI(model, new ITextViewer[] { viewer1, viewer2 }); - ui.enter(); -</pre> -</body> -</html>
--- a/dwtx/jface/text/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html><head> - <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> - <meta content="IBM" name="Author"> - <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" name="GENERATOR"><title>text infrastructure</title></head> - -<body> -<p>Provides a framework for creating and manipulating text documents.</p> -<h3>Package Specification</h3> -<p><tt>IDocument</tt> is the major text - model abstraction. It provides content management, position management using - position categories, document partition management, and change notification. - In order to be notified about document changes, an object must implements <tt>IDocumentListener - </tt>and must be registered with the document. <tt>Position</tt> - updating in responds to a document change is performed by implementers of <tt>IDocumentPositionUpdater</tt>. - Partition updating in responds to a document change is performed by implements - of <tt>IDocumentPartitioner</tt>. In order - to be notified about document partition changes, objects must implement <tt>IDocumentParititoningListener</tt> - and must be registered with the document.</p> -<p>The package contains default implementations for document position updaters - and for documents. <tt>AbstractDocument</tt> - uses <tt>ITextStorage</tt> for storing - and managing its content and <tt>ILineTracker</tt> - to maintain a line structure of its content. As defaults a gap text implementation - of <tt>ITextStore</tt> is provided, together - with a line tracker understanding the three standard line delimiters ("\r", - "\n", "\r\n") and a line tracker which can be freely configured - to consider any given set of strings as valid line delimiters. </p> -<p></p> -</body></html> \ No newline at end of file
--- a/dwtx/jface/text/presentation/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta name="Author" content="IBM"> - <meta name="GENERATOR" content="Mozilla/4.51 [en] (WinNT; I) [Netscape]"> - <title>Package-level Javadoc</title> -</head> -<body> -Provides a presentation reconciler add-on for an <tt>ITextViewer</tt>. -A presentation reconciler keep the presentation (styles and colors) in -sync with the content of the document serving as the <tt>ITextViewer</tt>'s -input. -<h2> -Package Specification</h2> -<tt>IPresentationReconciler</tt> defines the concept of a presentation -reconciler. It collaborates with content type specific presentation damagers -(<tt>IPresentationDamager</tt>) which for a given document change determine -the region of the presentation which must be rebuild, and content type -specific presentation repairers (<tt>IPresentationRepairer</tt>) which -construct for a given damage region the document presentation. The package -contains a default implementation of <tt>IPresentationReconciler </tt>(<tt>PresentationReconciler</tt>). -</body> -</html>
--- a/dwtx/jface/text/projection/FragmentUpdater.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/projection/FragmentUpdater.d Mon Sep 08 00:51:37 2008 +0200 @@ -54,7 +54,7 @@ * * @param fragmentCategory the position category used for managing the fragments of a document */ - protected this(String fragmentCategory) { + /+protected+/ this(String fragmentCategory) { super(fragmentCategory); } @@ -119,7 +119,7 @@ * Returns whether this updater considers any position affected by the given document event. A * position is affected if <code>event</code> {@link Position#overlapsWith(int, int) overlaps} * with it but not if the position is only shifted. - * + * * @param event the event * @return <code>true</code> if there is any affected position, <code>false</code> otherwise */
--- a/dwtx/jface/text/projection/ProjectionDocument.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/projection/ProjectionDocument.d Mon Sep 08 00:51:37 2008 +0200 @@ -132,7 +132,7 @@ fMasterDocumentExtension= cast(IDocumentExtension) fMasterDocument; fSegmentsCategory= SEGMENTS_CATEGORY; - fFragmentsCategory= FRAGMENTS_CATEGORY_PREFIX + toHash(); + fFragmentsCategory= FRAGMENTS_CATEGORY_PREFIX ~ Integer.toString(toHash()); fMasterDocument.addPositionCategory(fFragmentsCategory); fFragmentsUpdater= new FragmentUpdater(fFragmentsCategory); fMasterDocument.addPositionUpdater(fFragmentsUpdater); @@ -410,11 +410,11 @@ IRegion imageRegion= fMapping.toExactImageRegion(new Region(offsetInMaster, lengthInMaster)); if (imageRegion is null) - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); Fragment fragment= findFragment(offsetInMaster, lengthInMaster); if (fragment is null) - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, imageRegion.getOffset(), imageRegion.getLength(), "", offsetInMaster, lengthInMaster); //$NON-NLS-1$ super.fireDocumentAboutToBeChanged(event); @@ -500,9 +500,7 @@ if (leftEnd < rightEnd) gaps.add(new Region(leftEnd, rightEnd - leftEnd)); - IRegion[] result= new IRegion[gaps.size()]; - gaps.toArray(result); - return result; + return arraycast!(IRegion)(gaps.toArray()); } /**
--- a/dwtx/jface/text/projection/ProjectionDocumentEvent.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/projection/ProjectionDocumentEvent.d Mon Sep 08 00:51:37 2008 +0200 @@ -52,9 +52,29 @@ public class ProjectionDocumentEvent : SlaveDocumentEvent { /** The change type indicating a projection change */ - public const static Object PROJECTION_CHANGE= new Object(); + private static Object PROJECTION_CHANGE_; + public static Object PROJECTION_CHANGE(){ + if( PROJECTION_CHANGE_ is null ) { + synchronized( ProjectionDocumentEvent.classinfo ) { + if( PROJECTION_CHANGE_ is null ) { + PROJECTION_CHANGE_ = new Object(); + } + } + } + return PROJECTION_CHANGE_; + } /** The change type indicating a content change */ - public const static Object CONTENT_CHANGE= new Object(); + private static Object CONTENT_CHANGE_; + public static Object CONTENT_CHANGE(){ + if( CONTENT_CHANGE_ is null ) { + synchronized( ProjectionDocumentEvent.classinfo ) { + if( CONTENT_CHANGE_ is null ) { + CONTENT_CHANGE_ = new Object(); + } + } + } + return CONTENT_CHANGE_; + } /** The change type */ private Object fChangeType;
--- a/dwtx/jface/text/projection/ProjectionDocumentManager.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/projection/ProjectionDocumentManager.d Mon Sep 08 00:51:37 2008 +0200 @@ -64,7 +64,11 @@ public class ProjectionDocumentManager : IDocumentListener, ISlaveDocumentManager, ISlaveDocumentManagerExtension { /** Registry for master documents and their projection documents. */ - private Map fProjectionRegistry= new HashMap(); + private Map fProjectionRegistry; + + this(){ + fProjectionRegistry= new HashMap(); + } /** * Registers the given projection document for the given master document. @@ -73,10 +77,10 @@ * @param projection the projection document */ private void add(IDocument master, ProjectionDocument projection) { - List list= cast(List) fProjectionRegistry.get(master); + List list= cast(List) fProjectionRegistry.get(cast(Object)master); if (list is null) { list= new ArrayList(1); - fProjectionRegistry.put(master, list); + fProjectionRegistry.put(cast(Object)master, cast(Object)list); } list.add(projection); } @@ -88,11 +92,11 @@ * @param projection the projection document */ private void remove(IDocument master, ProjectionDocument projection) { - List list= cast(List) fProjectionRegistry.get(master); + List list= cast(List) fProjectionRegistry.get(cast(Object)master); if (list !is null) { list.remove(projection); if (list.size() is 0) - fProjectionRegistry.remove(master); + fProjectionRegistry.remove(cast(Object)master); } } @@ -103,7 +107,7 @@ * @return <code>true</code> if the given document is a master document known to this manager */ private bool hasProjection(IDocument master) { - return (cast(List)fProjectionRegistry.get(master) ); + return ( null !is cast(List)fProjectionRegistry.get(cast(Object)master) ); } /** @@ -114,7 +118,7 @@ * @return an iterator for all registered projection documents or <code>null</code> */ private Iterator getProjectionsIterator(IDocument master) { - List list= cast(List) fProjectionRegistry.get(master); + List list= cast(List) fProjectionRegistry.get(cast(Object)master); if (list !is null) return list.iterator(); return null; @@ -214,7 +218,7 @@ * @see dwtx.jface.text.ISlaveDocumentManager#isSlaveDocument(dwtx.jface.text.IDocument) */ public bool isSlaveDocument(IDocument document) { - return ( cast(ProjectionDocument)document ); + return ( null !is cast(ProjectionDocument)document ); } /* @@ -229,11 +233,9 @@ * @see dwtx.jface.text.ISlaveDocumentManagerExtension#getSlaveDocuments(dwtx.jface.text.IDocument) */ public IDocument[] getSlaveDocuments(IDocument master) { - List list= cast(List) fProjectionRegistry.get(master); + List list= cast(List) fProjectionRegistry.get(cast(Object)master); if (list !is null) { - IDocument[] result= new IDocument[list.size()]; - list.toArray(result); - return result; + return arraycast!(IDocument)(list.toArray()); } return null; }
--- a/dwtx/jface/text/projection/ProjectionMapping.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/projection/ProjectionMapping.d Mon Sep 08 00:51:37 2008 +0200 @@ -320,7 +320,7 @@ if (!takeClosestImage && startFragmentIdx > endFragmentIdx || endFragmentIdx is -1) return null; - Fragment[] result= {cast(Fragment) fragments[startFragmentIdx], cast(Fragment) fragments[endFragmentIdx]}; + Fragment[] result= [cast(Fragment) fragments[startFragmentIdx], cast(Fragment) fragments[endFragmentIdx]]; return result; } @@ -602,7 +602,7 @@ int offset= originRegion.getOffset(); if (originRegion.getLength() is 0) { int imageOffset= toImageOffset(offset); - return imageOffset > -1 ? [ new Region(imageOffset, 0) ] : null; + return imageOffset > -1 ? [ cast(IRegion) new Region(imageOffset, 0) ] : null; } int endOffset= exclusiveEnd(originRegion); @@ -649,7 +649,7 @@ if (originLength is 0) { int imageOffset= toImageOffset(originOffset); - return imageOffset > -1 ? [ new Region(originOffset, 0) ] : null; + return imageOffset > -1 ? [ cast(IRegion)new Region(originOffset, 0) ] : null; } int endOffset= originOffset + originLength;
--- a/dwtx/jface/text/projection/ProjectionTextStore.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/projection/ProjectionTextStore.d Mon Sep 08 00:51:37 2008 +0200 @@ -83,7 +83,7 @@ /** The document information mapping */ private IMinimalMapping fMapping; /** Internal region used for querying the mapping. */ - private ReusableRegion fReusableRegion= new ReusableRegion(); + private ReusableRegion fReusableRegion; /** @@ -94,6 +94,7 @@ * @param mapping the document information mapping */ public this(IDocument masterDocument, IMinimalMapping mapping) { + fReusableRegion= new ReusableRegion(); fMasterDocument= masterDocument; fMapping= mapping; }
--- a/dwtx/jface/text/projection/SegmentUpdater.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/projection/SegmentUpdater.d Mon Sep 08 00:51:37 2008 +0200 @@ -55,7 +55,7 @@ * * @param segmentCategory the position category used for managing the segments of a projection document */ - protected this(String segmentCategory) { + /+protected+/ this(String segmentCategory) { super(segmentCategory); } @@ -64,7 +64,7 @@ */ public void update(DocumentEvent event) { - Assert.isTrue( cast(ProjectionDocumentEvent)event ); + Assert.isTrue( null !is cast(ProjectionDocumentEvent)event ); fIsProjectionChange= (cast(ProjectionDocumentEvent) event).getChangeType() is ProjectionDocumentEvent.PROJECTION_CHANGE; try { @@ -79,7 +79,7 @@ for (int i= 0; i < category.length; i++) { fPosition= category[i]; - Assert.isTrue( cast(Segment)fPosition ); + Assert.isTrue( null !is cast(Segment)fPosition ); if (i < category.length - 1) fNextSegment= cast(Segment) category[i + 1];
--- a/dwtx/jface/text/projection/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html><head> - <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> - <meta content="IBM" name="Author"> - <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" name="GENERATOR"><title>projections</title></head> - -<body> -<p>This package provides an implementation of projection documents. Projection - is a specific master/slave mapping. Non-overlapping fragments if a master document - form the segments of a slave document. The slave document is completely built - out of segments, i.e. there are no gaps between two neighboring segments. The - segments have exactly the same sequence in which they apprear as fragments in - the master document.</p> -<h3>Package Specification</h3> -<p><tt>ProjectionDocument</tt> is custom - <tt>IDocument</tt> implementation that - uses a <tt>ProjectionTextStore. </tt>The - content of the <tt>ProjectionDocument</tt> - is defined by the <tt>ProjectionMapping. - </tt>The<tt> ProjectionDocumentManager</tt> - manages the life cycle of <tt>ProjectionDocuments</tt> - and their relation to their master documents.</p> -</body></html> \ No newline at end of file
--- a/dwtx/jface/text/quickassist/QuickAssistAssistant.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/quickassist/QuickAssistAssistant.d Mon Sep 08 00:51:37 2008 +0200 @@ -42,12 +42,12 @@ /** * Default implementation of <code>IQuickAssistAssistant</code>. - * + * * @since 3.2 */ public class QuickAssistAssistant : IQuickAssistAssistant, IQuickAssistAssistantExtension { - - + + private static final class QuickAssistAssistantImpl : ContentAssistant { /* * @see dwtx.jface.text.contentassist.ContentAssistant#possibleCompletionsClosed() @@ -55,7 +55,7 @@ public void possibleCompletionsClosed() { super.possibleCompletionsClosed(); } - + /* * @see dwtx.jface.text.contentassist.ContentAssistant#hide() * @since 3.4 @@ -65,7 +65,7 @@ } } - + private static final class ContentAssistProcessor : IContentAssistProcessor { private IQuickAssistProcessor fQuickAssistProcessor; @@ -73,7 +73,7 @@ this(IQuickAssistProcessor processor) { fQuickAssistProcessor= processor; } - + /* * @see dwtx.jface.text.contentassist.IContentAssistProcessor#computeCompletionProposals(dwtx.jface.text.ITextViewer, int) */ @@ -81,7 +81,7 @@ // panic code - should not happen if (!( cast(ISourceViewer)viewer )) return null; - + return fQuickAssistProcessor.computeQuickAssistProposals(new TextInvocationContext(cast(ISourceViewer)viewer, offset, -1)); } @@ -119,12 +119,12 @@ public IContextInformationValidator getContextInformationValidator() { return null; } - + } - + private QuickAssistAssistantImpl fQuickAssistAssistantImpl; private IQuickAssistProcessor fQuickAssistProcessor; - + public this() { fQuickAssistAssistantImpl= new QuickAssistAssistantImpl(); fQuickAssistAssistantImpl.enableAutoActivation(false); @@ -150,7 +150,7 @@ */ public void setQuickAssistProcessor(IQuickAssistProcessor processor) { fQuickAssistProcessor= processor; - fQuickAssistAssistantImpl.setDocumentPartitioning("__" + getClass().getName() + "_partitioning"); //$NON-NLS-1$ //$NON-NLS-2$ + fQuickAssistAssistantImpl.setDocumentPartitioning("__" ~ this.classinfo.name ~ "_partitioning"); //$NON-NLS-1$ //$NON-NLS-2$ fQuickAssistAssistantImpl.setContentAssistProcessor(new ContentAssistProcessor(processor), IDocument.DEFAULT_CONTENT_TYPE); } @@ -181,21 +181,21 @@ public void setInformationControlCreator(IInformationControlCreator creator) { fQuickAssistAssistantImpl.setInformationControlCreator(creator); } - + /* * @see dwtx.jface.text.quickassist.IQuickAssistAssistant#uninstall() */ public void uninstall() { fQuickAssistAssistantImpl.uninstall(); } - + /* * @see dwtx.jface.text.quickassist.IQuickAssistAssistant#setProposalSelectorBackground(dwt.graphics.Color) */ public void setProposalSelectorBackground(Color background) { fQuickAssistAssistantImpl.setProposalSelectorBackground(background); } - + /* * @see dwtx.jface.text.quickassist.IQuickAssistAssistant#setProposalSelectorForeground(dwt.graphics.Color) */ @@ -230,7 +230,7 @@ */ public void setStatusLineVisible(bool show) { fQuickAssistAssistantImpl.setStatusLineVisible(show); - + } /* @@ -239,10 +239,10 @@ public void setStatusMessage(String message) { fQuickAssistAssistantImpl.setStatusMessage(message); } - + /** * {@inheritDoc} - * + * * @since 3.4 */ public final IHandler getHandler(String commandId) { @@ -260,7 +260,7 @@ /** * {@inheritDoc} - * + * * @since 3.4 */ public void enableColoredLabels(bool isEnabled) {
--- a/dwtx/jface/text/quickassist/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta name="Author" content="IBM"> - <meta name="GENERATOR" content="Mozilla/4.51 [en] (WinNT; I) [Netscape]"> - <title>Package-level Javadoc</title> -</head> -<body> -This package provides the quick assist assistant add-on for an <tt>ISourceViewer</tt>. -The quick assist assistant's purpose is to propose, display, and insert quick assists and quick fixes -available at the current source viewer's quick assist invocation context. -<p> -A quick fix is a completion that can correct a problem reported and visible through an <tt>Annotation</tt> -while a quick assist is not related to a problem or <tt>Annotation</tt>. Since quick assists can be proposed -where appropriate they are normally not visible in the viewer. The quick assist assistant implementation in -this package can show the quick assists that are available on the current line. -</p> - -<h2> -Package Specification</h2> -<tt>IQuickAssistAssistant</tt> defines the concept of the quick assist assistant add-on. -It collaborates with a quick assist processor (<tt>IQuickAssistProcessor</tt>) -in order to generate quick fix and quick assist completion proposals (<tt>ICompletionProposal</tt>) -available at the current quick assist invocation context (<tt>IQuickAssistInvocationContext</tt>). -The package provides a default implementation <tt>QuickAssistAssistant</tt> which completely defines -and implements the UI and the control flow for a quick assist assistant. -<br> -</body> -</html>
--- a/dwtx/jface/text/reconciler/AbstractReconcileStep.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/reconciler/AbstractReconcileStep.d Mon Sep 08 00:51:37 2008 +0200 @@ -56,7 +56,7 @@ * @param step the reconcile step */ public this(IReconcileStep step) { - Assert.isNotNull(step); + Assert.isNotNull(cast(Object)step); fNextStep= step; fNextStep.setPreviousStep(this); } @@ -155,8 +155,8 @@ return results1; // XXX: not yet performance optimized - Collection collection= new ArrayList(Arrays.asList(results1)); - collection.addAll(Arrays.asList(results2)); + Collection collection= new ArrayList(Arrays.asList(arraycast!(Object)(results1))); + collection.addAll(Arrays.asList(arraycast!(Object)(results2))); return arraycast!(IReconcileResult)(collection.toArray()); } @@ -171,7 +171,7 @@ * @see IReconcileStep#setPreviousStep(IReconcileStep) */ public void setPreviousStep(IReconcileStep step) { - Assert.isNotNull(step); + Assert.isNotNull(cast(Object)step); Assert.isTrue(fPreviousStep is null); fPreviousStep= step; }
--- a/dwtx/jface/text/reconciler/AbstractReconciler.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/reconciler/AbstractReconciler.d Mon Sep 08 00:51:37 2008 +0200 @@ -89,14 +89,19 @@ public this(String name) { thread = new Thread( &run ); thread.name = name; - thread.priority = Thread.MIN_PRIORITY; + thread.priority = Thread.PRIORITY_MIN; thread.isDaemon(true); } public void start(){ thread.start(); } - + public bool isAlive(){ + return thread.isRunning(); + } + public Thread getThread(){ + return thread; + } /** * Returns whether a reconciling strategy is active right now. * @@ -260,7 +265,7 @@ public void documentChanged(DocumentEvent e) { if (!fThread.isDirty() && fThread.isAlive()) { - if (!fIsAllowedToModifyDocument && Thread.currentThread() is fThread) + if (!fIsAllowedToModifyDocument && Thread.getThis() is fThread.getThread()) throw new UnsupportedOperationException("The reconciler thread is not allowed to modify the document"); //$NON-NLS-1$ aboutToBeReconciled(); } @@ -474,13 +479,13 @@ */ public void install(ITextViewer textViewer) { - Assert.isNotNull(textViewer); + Assert.isNotNull(cast(Object)textViewer); fViewer= textViewer; synchronized (this) { if (fThread !is null) return; - fThread= new BackgroundThread(getClass().getName()); + fThread= new BackgroundThread(this.classinfo.name); } fDirtyRegionQueue= new DirtyRegionQueue(); @@ -597,14 +602,15 @@ return; if (!fThread.isAlive()) { - try { +// DWT +// try { fThread.start(); - } catch (IllegalThreadStateException e) { +// } catch (IllegalThreadStateException e) { // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=40549 // This is the only instance where the thread is started; since // we checked that it is not alive, it must be dead already due // to a run-time exception or error. Exit. - } +// } } else { fThread.reset(); } @@ -624,6 +630,6 @@ * @since 3.4 */ protected bool isRunningInReconcilerThread() { - return Thread.currentThread() is fThread; + return Thread.getThis() is fThread.getThread(); } }
--- a/dwtx/jface/text/reconciler/DirtyRegion.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/reconciler/DirtyRegion.d Mon Sep 08 00:51:37 2008 +0200 @@ -125,6 +125,6 @@ int end= Math.max(fOffset + fLength, dr.fOffset + dr.fLength); fOffset= start; fLength= end - start; - fText= (dr.fText is null ? fText : (fText is null) ? dr.fText : fText + dr.fText); + fText= (dr.fText is null ? fText : (fText is null) ? dr.fText : fText ~ dr.fText); } }
--- a/dwtx/jface/text/reconciler/DirtyRegionQueue.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/reconciler/DirtyRegionQueue.d Mon Sep 08 00:51:37 2008 +0200 @@ -30,7 +30,8 @@ import dwtx.dwtxhelper.Collection; - +import tango.core.sync.Mutex; +import tango.core.sync.Condition; /** * Queue used by {@link dwtx.jface.text.reconciler.AbstractReconciler} to manage @@ -40,16 +41,28 @@ * @see dwtx.jface.text.reconciler.AbstractReconciler * @see dwtx.jface.text.reconciler.DirtyRegion */ -class DirtyRegionQueue { +class DirtyRegionQueue : Mutex { /** The list of dirty regions. */ - private List fDirtyRegions= new ArrayList(); - + private List fDirtyRegions; + private Condition cond; /** * Creates a new empty dirty region. */ public this() { - super(); + //super(); + fDirtyRegions= new ArrayList(); + cond = new Condition(this); + } + + public void wait(){ + cond.wait(); + } + public void wait(int delay){ + cond.wait(delay/1000.0); + } + public void notifyAll(){ + cond.notifyAll(); } /**
--- a/dwtx/jface/text/reconciler/MonoReconciler.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/reconciler/MonoReconciler.d Mon Sep 08 00:51:37 2008 +0200 @@ -64,7 +64,7 @@ * @param isIncremental the indication whether strategy is incremental or not */ public this(IReconcilingStrategy strategy, bool isIncremental) { - Assert.isNotNull(strategy); + Assert.isNotNull(cast(Object)strategy); fStrategy= strategy; if ( cast(IReconcilingStrategyExtension)fStrategy ) { IReconcilingStrategyExtension extension= cast(IReconcilingStrategyExtension)fStrategy;
--- a/dwtx/jface/text/reconciler/Reconciler.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/reconciler/Reconciler.d Mon Sep 08 00:51:37 2008 +0200 @@ -117,7 +117,7 @@ if (strategy is null) fStrategies.remove(contentType); else { - fStrategies.put(contentType, strategy); + fStrategies.put(contentType, cast(Object)strategy); if (cast(IReconcilingStrategyExtension )strategy && getProgressMonitor() !is null) { IReconcilingStrategyExtension extension= cast(IReconcilingStrategyExtension) strategy; extension.setProgressMonitor(getProgressMonitor()); @@ -236,7 +236,7 @@ try { regions= TextUtilities.computePartitioning(getDocument(), getDocumentPartitioning(), offset, length, false); } catch (BadLocationException x) { - regions= new TypedRegion[0]; + regions= new ITypedRegion[0]; } return regions; }
--- a/dwtx/jface/text/reconciler/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta name="Author" content="IBM"> - <meta name="GENERATOR" content="Mozilla/4.76 [en] (Windows NT 5.0; U) [Netscape]"> - <title>Package-level Javadoc</title> -</head> -<body> -Provides a reconciler add-on for an <tt>ITextViewer</tt>. -A reconciler provides generic synchronization support with -the content of the document serving as the <tt>ITextViewer</tt>'s input. -There is no explicit model of what is synchronized. -<h2> -Package Specification</h2> -<tt>IReconciler</tt> defines the concept of a reconciler. It collaborates -with content type specific reconciling strategies (<tt>IReconcilingStrategy</tt>) -which perform the synchronization for a given dirty region. The package -contains a default implementation of <tt>IReconciler</tt> (<tt>Reconciler</tt>). - -<tt>Reconciler</tt> and <tt>MonoReconciler</tt> implements reconciling -as a periodic background activity and folds co-located changes while being -inactive. -</body> -</html>
--- a/dwtx/jface/text/revisions/IRevisionRulerColumnExtension.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/revisions/IRevisionRulerColumnExtension.d Mon Sep 08 00:51:37 2008 +0200 @@ -27,23 +27,11 @@ import dwtx.jface.viewers.ISelectionProvider; static this(){ - IRevisionRulerColumnExtension.AUTHOR= new IRevisionRulerColumnExtension.RenderingMode("Author"); //$NON-NLS-1$ - IRevisionRulerColumnExtension.AGE= new IRevisionRulerColumnExtension.RenderingMode("Age"); //$NON-NLS-1$ - IRevisionRulerColumnExtension.AUTHOR_SHADED_BY_AGE= new IRevisionRulerColumnExtension.RenderingMode("Both"); //$NON-NLS-1$ + IRevisionRulerColumnExtension_AUTHOR= new IRevisionRulerColumnExtension_RenderingMode("Author"); //$NON-NLS-1$ + IRevisionRulerColumnExtension_AGE= new IRevisionRulerColumnExtension_RenderingMode("Age"); //$NON-NLS-1$ + IRevisionRulerColumnExtension_AUTHOR_SHADED_BY_AGE= new IRevisionRulerColumnExtension_RenderingMode("Both"); //$NON-NLS-1$ } -/** - * Extension interface for {@link IRevisionRulerColumn}. - * <p> - * Introduces the ability to register a selection listener on revisions and configurable rendering - * modes. - * </p> - * - * @see IRevisionRulerColumn - * @since 3.3 - */ -public interface IRevisionRulerColumnExtension { - /** * Rendering mode type-safe enum. */ @@ -61,11 +49,13 @@ return fName; } } + alias RenderingMode IRevisionRulerColumnExtension_RenderingMode; + /** * Rendering mode that assigns a unique color to each revision author. */ - static const RenderingMode AUTHOR; + static const RenderingMode IRevisionRulerColumnExtension_AUTHOR; /** * Rendering mode that assigns colors to revisions by their age. * <p> @@ -73,7 +63,7 @@ * The coloring scheme can change in future releases. * </p> */ - static const RenderingMode AGE; + static const RenderingMode IRevisionRulerColumnExtension_AGE; /** * Rendering mode that assigns unique colors per revision author and * uses different color intensity depending on the age. @@ -83,7 +73,19 @@ * The coloring scheme can change in future releases. * </p> */ - static const RenderingMode AUTHOR_SHADED_BY_AGE; + static const RenderingMode IRevisionRulerColumnExtension_AUTHOR_SHADED_BY_AGE; + +/** + * Extension interface for {@link IRevisionRulerColumn}. + * <p> + * Introduces the ability to register a selection listener on revisions and configurable rendering + * modes. + * </p> + * + * @see IRevisionRulerColumn + * @since 3.3 + */ +public interface IRevisionRulerColumnExtension { /** * Changes the rendering mode and triggers redrawing if needed.
--- a/dwtx/jface/text/revisions/Revision.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/revisions/Revision.d Mon Sep 08 00:51:37 2008 +0200 @@ -40,7 +40,7 @@ */ public abstract class Revision { /** The original list of change regions, element type: {@link ChangeRegion}. */ - private const List fChangeRegions= new ArrayList(); + private const List fChangeRegions; /** * The cached list of adjusted ranges, element type: {@link RevisionRange}. <code>null</code> * if the list must be re-computed. Unmodifiable. @@ -53,6 +53,7 @@ * Creates a new revision. */ protected this() { + fChangeRegions= new ArrayList(); } /** @@ -151,7 +152,7 @@ * @see java.lang.Object#toString() */ public override String toString() { - return "Revision " + getId(); //$NON-NLS-1$ + return "Revision " ~ getId(); //$NON-NLS-1$ } /**
--- a/dwtx/jface/text/revisions/RevisionRange.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/revisions/RevisionRange.d Mon Sep 08 00:51:37 2008 +0200 @@ -21,7 +21,7 @@ import dwt.dwthelper.utils; - +import tango.text.convert.Format; import dwtx.core.runtime.Assert; import dwtx.jface.text.source.ILineRange; @@ -29,7 +29,7 @@ /** * An unmodifiable line range that belongs to a {@link Revision}. - * + * * @since 3.3 * @noinstantiate This class is not intended to be instantiated by clients. */ @@ -47,7 +47,7 @@ /** * Returns the revision that this range belongs to. - * + * * @return the revision that this range belongs to */ public Revision getRevision() { @@ -72,6 +72,6 @@ * @see java.lang.Object#toString() */ public override String toString() { - return "RevisionRange [" + fRevision.toString() + ", [" + getStartLine() + "+" + getNumberOfLines() + ")]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ + return Format("RevisionRange [{}, [{}+{})]", fRevision.toString(), getStartLine(), getNumberOfLines()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } }
--- a/dwtx/jface/text/revisions/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta name="Author" content="IBM"> - <title>Package-level Javadoc</title> -</head> -<body> -Provides a revision model and a protocol to display revision information in a vertical ruler column. -<h2>Package Specification</h2> -<tt>IRevisionRulerColumn</tt> is the protocol that a team provider can use to display line based revision control information to a document. -<tt>RevisionInformation</tt> defines the revision model, which contains a list of <tt>Revision</tt>s, which in turn contain <tt>RevisionRange</tt>s. -</body> -</html>
--- a/dwtx/jface/text/rules/BufferedRuleBasedScanner.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/BufferedRuleBasedScanner.d Mon Sep 08 00:51:37 2008 +0200 @@ -58,7 +58,7 @@ /** The actual size of the buffer. Initially set to <code>DEFAULT_BUFFER_SIZE</code> */ private int fBufferSize= DEFAULT_BUFFER_SIZE; /** The buffer */ - private char[] fBuffer= new char[DEFAULT_BUFFER_SIZE]; + private char[] fBuffer; /** The offset of the document at which the buffer starts */ private int fStart; /** The offset of the document at which the buffer ends */ @@ -73,6 +73,8 @@ */ protected this() { super(); + fBuffer= new char[DEFAULT_BUFFER_SIZE]; + fBuffer[] = 0; } /** @@ -84,6 +86,8 @@ */ public this(int size) { super(); + fBuffer= new char[DEFAULT_BUFFER_SIZE]; + fBuffer[] = 0; setBufferSize(size); } @@ -96,6 +100,7 @@ Assert.isTrue(size > 0); fBufferSize= size; fBuffer= new char[size]; + fBuffer[] = 0; } /**
--- a/dwtx/jface/text/rules/DefaultDamagerRepairer.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/DefaultDamagerRepairer.d Mon Sep 08 00:51:37 2008 +0200 @@ -106,7 +106,7 @@ */ public this(ITokenScanner scanner) { - Assert.isNotNull(scanner); + Assert.isNotNull(cast(Object)scanner); fScanner= scanner; fDefaultTextAttribute= new TextAttribute(null);
--- a/dwtx/jface/text/rules/DefaultPartitioner.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/DefaultPartitioner.d Mon Sep 08 00:51:37 2008 +0200 @@ -128,7 +128,7 @@ public this(IPartitionTokenScanner scanner, String[] legalContentTypes) { fScanner= scanner; fLegalContentTypes= TextUtilities.copy(legalContentTypes); - fPositionCategory= CONTENT_TYPES_CATEGORY + toHash(); + fPositionCategory= CONTENT_TYPES_CATEGORY ~ Integer.toString(toHash()); fPositionUpdater= new DefaultPositionUpdater(fPositionCategory); } @@ -152,7 +152,7 @@ * @since 3.1 */ public void connect(IDocument document, bool delayInitialization) { - Assert.isNotNull(document); + Assert.isNotNull(cast(Object)document); Assert.isTrue(!document.containsPositionCategory(fPositionCategory)); fDocument= document; @@ -558,8 +558,8 @@ */ protected String getTokenContentType(IToken token) { Object data= token.getData(); - if ( cast(String)data ) - return cast(String) data; + if ( auto str = cast(ArrayWrapperString)data ) + return str.array; return null; } @@ -653,9 +653,7 @@ } catch (BadPositionCategoryException x) { } - TypedRegion[] result= new TypedRegion[list.size()]; - list.toArray(result); - return result; + return arraycast!(ITypedRegion)(list.toArray()); } /**
--- a/dwtx/jface/text/rules/FastPartitioner.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/FastPartitioner.d Mon Sep 08 00:51:37 2008 +0200 @@ -37,12 +37,9 @@ import dwtx.jface.text.rules.BufferedRuleBasedScanner; // packageimport import dwtx.jface.text.rules.IWhitespaceDetector; // packageimport - import dwt.dwthelper.utils; - - import dwtx.dwtxhelper.Collection; - +import tango.text.convert.Format; import dwtx.core.runtime.Assert; import dwtx.core.runtime.Platform; @@ -124,7 +121,19 @@ */ private Position[] fCachedPositions= null; /** Debug option for cache consistency checking. */ - private static const bool CHECK_CACHE_CONSISTENCY= "true".equalsIgnoreCase(Platform.getDebugOption("dwtx.jface.text/debug/FastPartitioner/PositionCache")); //$NON-NLS-1$//$NON-NLS-2$; + private static bool CHECK_CACHE_CONSISTENCY_; + private static bool CHECK_CACHE_CONSISTENCY_init; + private static bool CHECK_CACHE_CONSISTENCY(){ + if( !CHECK_CACHE_CONSISTENCY_init ){ + synchronized(FastPartitioner.classinfo ){ + if( !CHECK_CACHE_CONSISTENCY_init ){ + CHECK_CACHE_CONSISTENCY_init = true; + CHECK_CACHE_CONSISTENCY_ = "true".equalsIgnoreCase(Platform.getDebugOption("dwtx.jface.text/debug/FastPartitioner/PositionCache")); //$NON-NLS-1$//$NON-NLS-2$; + } + } + } + return CHECK_CACHE_CONSISTENCY_; + } /** * Creates a new partitioner that uses the given scanner and may return @@ -136,7 +145,7 @@ public this(IPartitionTokenScanner scanner, String[] legalContentTypes) { fScanner= scanner; fLegalContentTypes= TextUtilities.copy(legalContentTypes); - fPositionCategory= CONTENT_TYPES_CATEGORY + toHash(); + fPositionCategory= CONTENT_TYPES_CATEGORY ~ Integer.toString(toHash()); fPositionUpdater= new DefaultPositionUpdater(fPositionCategory); } @@ -161,7 +170,7 @@ * </p> */ public void connect(IDocument document, bool delayInitialization) { - Assert.isNotNull(document); + Assert.isNotNull(cast(Object)document); Assert.isTrue(!document.containsPositionCategory(fPositionCategory)); fDocument= document; @@ -594,8 +603,8 @@ */ protected String getTokenContentType(IToken token) { Object data= token.getData(); - if ( cast(String)data ) - return cast(String) data; + if ( auto str = cast(ArrayWrapperString)data ) + return str.array; return null; } @@ -701,9 +710,7 @@ throw ex; } - TypedRegion[] result= new TypedRegion[list.size()]; - list.toArray(result); - return result; + return arraycast!(ITypedRegion)(list.toArray()); } /** @@ -828,13 +835,13 @@ Position[] positions= fDocument.getPositions(fPositionCategory); int len= Math.min(positions.length, fCachedPositions.length); for (int i= 0; i < len; i++) { - if (!positions[i].equals(fCachedPositions[i])) - System.err.println("FastPartitioner.getPositions(): cached position is not up to date: from document: " + toString(positions[i]) + " in cache: " + toString(fCachedPositions[i])); //$NON-NLS-1$ //$NON-NLS-2$ + if (!positions[i].opEquals(fCachedPositions[i])) + System.err.println(Format("FastPartitioner.getPositions(): cached position is not up to date: from document: {} in cache: {}", toString(positions[i]), toString(fCachedPositions[i]))); //$NON-NLS-1$ //$NON-NLS-2$ } for (int i= len; i < positions.length; i++) - System.err.println("FastPartitioner.getPositions(): new position in document: " + toString(positions[i])); //$NON-NLS-1$ + System.err.println(Format("FastPartitioner.getPositions(): new position in document: {}", toString(positions[i]))); //$NON-NLS-1$ for (int i= len; i < fCachedPositions.length; i++) - System.err.println("FastPartitioner.getPositions(): stale position in cache: " + toString(fCachedPositions[i])); //$NON-NLS-1$ + System.err.println(Format("FastPartitioner.getPositions(): stale position in cache: {}", toString(fCachedPositions[i]))); //$NON-NLS-1$ } return fCachedPositions; } @@ -846,6 +853,6 @@ * @return a formatted string */ private override String toString(Position position) { - return "P[" + position.getOffset() + "+" + position.getLength() + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + return Format("P[{}+{}]", position.getOffset(), position.getLength() ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } }
--- a/dwtx/jface/text/rules/NumberRule.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/NumberRule.d Mon Sep 08 00:51:37 2008 +0200 @@ -50,7 +50,7 @@ public class NumberRule : IRule { /** Internal setting for the un-initialized column constraint */ - protected static final int UNDEFINED= -1; + protected static const int UNDEFINED= -1; /** The token to be returned when this rule is successful */ protected IToken fToken; /** The column constraint */ @@ -63,7 +63,7 @@ * @param token the token to be returned */ public this(IToken token) { - Assert.isNotNull(token); + Assert.isNotNull(cast(Object)token); fToken= token; } @@ -86,11 +86,11 @@ */ public IToken evaluate(ICharacterScanner scanner) { int c= scanner.read(); - if (Character.isDigit(cast(wchar)c)) { + if (Character.isDigit(cast(char)c)) { if (fColumn is UNDEFINED || (fColumn is scanner.getColumn() - 1)) { do { c= scanner.read(); - } while (Character.isDigit(cast(wchar) c)); + } while (Character.isDigit(cast(char) c)); scanner.unread(); return fToken; }
--- a/dwtx/jface/text/rules/PatternRule.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/PatternRule.d Mon Sep 08 00:51:37 2008 +0200 @@ -69,7 +69,7 @@ */ private static class DecreasingCharArrayLengthComparator : Comparator { public int compare(Object o1, Object o2) { - return ((char[]) o2).length - ((char[]) o1).length; + return stringcast( o2).length - stringcast( o1).length; } } @@ -83,7 +83,7 @@ /** The pattern's end sequence */ protected char[] fEndSequence; /** The pattern's column constrain */ - protected int fColumn= UNDEFINED; + protected int fColumn; /** The pattern's escape character */ protected char fEscapeCharacter; /** @@ -100,7 +100,7 @@ * Line delimiter comparator which orders according to decreasing delimiter length. * @since 3.1 */ - private Comparator fLineDelimiterComparator= new DecreasingCharArrayLengthComparator(); + private Comparator fLineDelimiterComparator; /** * Cached line delimiters. * @since 3.1 @@ -125,9 +125,12 @@ * @param breaksOnEOL indicates whether the end of the line also terminates the pattern */ public this(String startSequence, String endSequence, IToken token, char escapeCharacter, bool breaksOnEOL) { + fColumn= UNDEFINED; + fLineDelimiterComparator= new DecreasingCharArrayLengthComparator(); + Assert.isTrue(startSequence !is null && startSequence.length() > 0); Assert.isTrue(endSequence !is null || breaksOnEOL); - Assert.isNotNull(token); + Assert.isNotNull(cast(Object)token); fStartSequence= startSequence.toCharArray(); fEndSequence= (endSequence is null ? new char[0] : endSequence.toCharArray()); @@ -256,7 +259,7 @@ char[][] originalDelimiters= scanner.getLegalLineDelimiters(); int count= originalDelimiters.length; if (fLineDelimiters is null || originalDelimiters.length !is count) { - fSortedLineDelimiters= new char[count][]; + fSortedLineDelimiters= new char[][](count); } else { while (count > 0 && fLineDelimiters[count-1] is originalDelimiters[count-1]) count--; @@ -294,7 +297,7 @@ } readCount++; } - + if (fBreaksOnEOF) return true;
--- a/dwtx/jface/text/rules/RuleBasedPartitionScanner.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/RuleBasedPartitionScanner.d Mon Sep 08 00:51:37 2008 +0200 @@ -60,7 +60,7 @@ /** * Disallow setting the rules since this scanner * exclusively uses predicate rules. - * + * * @param rules the sequence of rules controlling this scanner */ public void setRules(IRule[] rules) { @@ -121,7 +121,7 @@ for (int i= 0; i < fRules.length; i++) { rule= cast(IPredicateRule) fRules[i]; token= rule.getSuccessToken(); - if (fContentType.equals(token.getData())) { + if (fContentType.equals(stringcast(token.getData()))) { token= rule.evaluate(this, resume); if (!token.isUndefined()) { fContentType= null;
--- a/dwtx/jface/text/rules/RuleBasedPartitioner.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/RuleBasedPartitioner.d Mon Sep 08 00:51:37 2008 +0200 @@ -119,7 +119,7 @@ public this(RuleBasedScanner scanner, String[] legalContentTypes) { fScanner= scanner; fLegalContentTypes= TextUtilities.copy(legalContentTypes); - fPositionCategory= CONTENT_TYPES_CATEGORY + toHash(); + fPositionCategory= CONTENT_TYPES_CATEGORY ~ Integer.toString(toHash()); fPositionUpdater= new DefaultPositionUpdater(fPositionCategory); } @@ -135,7 +135,7 @@ * @see IDocumentPartitioner#connect */ public void connect(IDocument document) { - Assert.isNotNull(document); + Assert.isNotNull(cast(Object)document); Assert.isTrue(!document.containsPositionCategory(fPositionCategory)); fDocument= document; @@ -523,8 +523,8 @@ */ protected String getTokenContentType(IToken token) { Object data= token.getData(); - if ( cast(String)data ) - return cast(String) data; + if ( auto str = cast(ArrayWrapperString)data ) + return str.array; return null; } @@ -611,8 +611,6 @@ } catch (BadPositionCategoryException x) { } - TypedRegion[] result= new TypedRegion[list.size()]; - list.toArray(result); - return result; + return arraycast!(ITypedRegion)(list.toArray()); } }
--- a/dwtx/jface/text/rules/RuleBasedScanner.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/RuleBasedScanner.d Mon Sep 08 00:51:37 2008 +0200 @@ -95,7 +95,7 @@ public void setRules(IRule[] rules) { if (rules !is null) { fRules= new IRule[rules.length]; - System.arraycopy(rules, 0, fRules, 0, rules.length); + SimpleType!(IRule).arraycopy(rules, 0, fRules, 0, rules.length); } else fRules= null; } @@ -116,7 +116,7 @@ /* * @see ITokenScanner#setRange(IDocument, int, int) */ - public void setRange(final IDocument document, int offset, int length) { + public void setRange(IDocument document, int offset, int length) { Assert.isLegal(document !is null); final int documentLength= document.getLength(); checkRange(offset, length, documentLength); @@ -127,7 +127,7 @@ fRangeEnd= offset + length; String[] delimiters= fDocument.getLegalLineDelimiters(); - fDelimiters= new char[delimiters.length][]; + fDelimiters= new char[][](delimiters.length); for (int i= 0; i < delimiters.length; i++) fDelimiters[i]= delimiters[i].toCharArray(); @@ -138,7 +138,7 @@ /** * Checks that the given range is valid. * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=69292 - * + * * @param offset the offset of the document range to scan * @param length the length of the document range to scan * @param documentLength the document's length
--- a/dwtx/jface/text/rules/Token.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/Token.d Mon Sep 08 00:51:37 2008 +0200 @@ -62,21 +62,61 @@ /** * Standard token: Undefined. */ - public static const IToken UNDEFINED= new Token(T_UNDEFINED); + public static IToken UNDEFINED_; + public static IToken UNDEFINED(){ + if( UNDEFINED_ is null ){ + synchronized( Token.classinfo ){ + if( UNDEFINED_ is null ){ + UNDEFINED_ = new Token(T_UNDEFINED); + } + } + } + return UNDEFINED_; + } /** * Standard token: End Of File. */ - public static const IToken EOF= new Token(T_EOF); + public static IToken EOF_; + public static IToken EOF(){ + if( EOF_ is null ){ + synchronized( Token.classinfo ){ + if( EOF_ is null ){ + EOF_ = new Token(T_EOF); + } + } + } + return EOF_; + } /** * Standard token: Whitespace. */ - public static const IToken WHITESPACE= new Token(T_WHITESPACE); + public static IToken WHITESPACE_; + public static IToken WHITESPACE(){ + if( WHITESPACE_ is null ){ + synchronized( Token.classinfo ){ + if( WHITESPACE_ is null ){ + WHITESPACE_ = new Token(T_WHITESPACE); + } + } + } + return WHITESPACE_; + } /** * Standard token: Neither {@link #UNDEFINED}, {@link #WHITESPACE}, nor {@link #EOF}. * @deprecated will be removed */ - public static const IToken OTHER= new Token(T_OTHER); + public static IToken OTHER_; + public static IToken OTHER(){ + if( OTHER_ is null ){ + synchronized( Token.classinfo ){ + if( OTHER_ is null ){ + OTHER_ = new Token(T_OTHER); + } + } + } + return OTHER_; + } /** The type of this token */ private int fType;
--- a/dwtx/jface/text/rules/WhitespaceRule.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/WhitespaceRule.d Mon Sep 08 00:51:37 2008 +0200 @@ -65,7 +65,7 @@ * @param detector the rule's whitespace detector, may not be <code>null</code> */ public this(IWhitespaceDetector detector) { - Assert.isNotNull(detector); + Assert.isNotNull(cast(Object)detector); fDetector= detector; } @@ -74,10 +74,10 @@ */ public IToken evaluate(ICharacterScanner scanner) { int c= scanner.read(); - if (fDetector.isWhitespace(cast(wchar) c)) { + if (fDetector.isWhitespace(cast(char) c)) { do { c= scanner.read(); - } while (fDetector.isWhitespace(cast(wchar) c)); + } while (fDetector.isWhitespace(cast(char) c)); scanner.unread(); return Token.WHITESPACE; }
--- a/dwtx/jface/text/rules/WordPatternRule.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/WordPatternRule.d Mon Sep 08 00:51:37 2008 +0200 @@ -56,7 +56,7 @@ /** The word detector used by this rule */ protected IWordDetector fDetector; /** The internal buffer used for pattern detection */ - private StringBuffer fBuffer= new StringBuffer(); + private StringBuffer fBuffer; /** * Creates a rule for the given starting and ending word @@ -86,8 +86,9 @@ * @param escapeCharacter the escape character */ public this(IWordDetector detector, String startSequence, String endSequence, IToken token, char escapeCharacter) { + fBuffer= new StringBuffer(); super(startSequence, endSequence, token, escapeCharacter); - Assert.isNotNull(detector); + Assert.isNotNull(cast(Object)detector); fDetector= detector; } @@ -101,17 +102,17 @@ * @return <code>true</code> if the word ends on the given end sequence */ protected bool endSequenceDetected(ICharacterScanner scanner) { - fBuffer.setLength(0); + fBuffer.truncate(0); int c= scanner.read(); - while (fDetector.isWordPart(cast(wchar) c)) { - fBuffer.append(cast(wchar) c); + while (fDetector.isWordPart(cast(char) c)) { + fBuffer.append(cast(char) c); c= scanner.read(); } scanner.unread(); if (fBuffer.length() >= fEndSequence.length) { for (int i=fEndSequence.length - 1, j= fBuffer.length() - 1; i >= 0; i--, j--) { - if (fEndSequence[i] !is fBuffer.charAt(j)) { + if (fEndSequence[i] !is fBuffer.slice()[j]) { unreadBuffer(scanner); return false; } @@ -131,7 +132,8 @@ * @param scanner the scanner to be used */ protected void unreadBuffer(ICharacterScanner scanner) { - fBuffer.insert(0, fStartSequence); + fBuffer.select(0, 0 ); + fBuffer.replace(fStartSequence); for (int i= fBuffer.length() - 1; i > 0; i--) scanner.unread(); }
--- a/dwtx/jface/text/rules/WordRule.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/WordRule.d Mon Sep 08 00:51:37 2008 +0200 @@ -61,7 +61,7 @@ public class WordRule : IRule { /** Internal setting for the un-initialized column constraint. */ - protected static final int UNDEFINED= -1; + protected static const int UNDEFINED= -1; /** The word detector used by this rule. */ protected IWordDetector fDetector; @@ -70,9 +70,9 @@ /** The column constraint. */ protected int fColumn= UNDEFINED; /** The table of predefined words and token for this rule. */ - protected Map fWords= new HashMap(); + protected Map fWords; /** Buffer used for pattern detection. */ - private StringBuffer fBuffer= new StringBuffer(); + private StringBuffer fBuffer; /** * Tells whether this rule is case sensitive. * @since 3.3 @@ -119,8 +119,11 @@ * @since 3.3 */ public this(IWordDetector detector, IToken defaultToken, bool ignoreCase) { - Assert.isNotNull(detector); - Assert.isNotNull(defaultToken); + fWords= new HashMap(); + fBuffer= new StringBuffer(); + + Assert.isNotNull(cast(Object)detector); + Assert.isNotNull(cast(Object)defaultToken); fDetector= detector; fDefaultToken= defaultToken; @@ -134,10 +137,10 @@ * @param token the token to be returned if the word has been found, may not be <code>null</code> */ public void addWord(String word, IToken token) { - Assert.isNotNull(word); - Assert.isNotNull(token); + //Assert.isNotNull(word); + Assert.isNotNull(cast(Object)token); - fWords.put(word, token); + fWords.put(word, cast(Object)token); } /** @@ -159,23 +162,23 @@ */ public IToken evaluate(ICharacterScanner scanner) { int c= scanner.read(); - if (c !is ICharacterScanner.EOF && fDetector.isWordStart(cast(wchar) c)) { + if (c !is ICharacterScanner.EOF && fDetector.isWordStart(cast(char) c)) { if (fColumn is UNDEFINED || (fColumn is scanner.getColumn() - 1)) { - fBuffer.setLength(0); + fBuffer.truncate(0); do { - fBuffer.append(cast(wchar) c); + fBuffer.append(cast(char) c); c= scanner.read(); - } while (c !is ICharacterScanner.EOF && fDetector.isWordPart(cast(wchar) c)); + } while (c !is ICharacterScanner.EOF && fDetector.isWordPart(cast(char) c)); scanner.unread(); String buffer= fBuffer.toString(); IToken token= cast(IToken)fWords.get(buffer); - + if(fIgnoreCase) { Iterator iter= fWords.keySet().iterator(); while (iter.hasNext()) { - String key= cast(String)iter.next(); + String key= stringcast(iter.next()); if(buffer.equalsIgnoreCase(key)) { token= cast(IToken)fWords.get(key); break; @@ -183,7 +186,7 @@ } } else token= cast(IToken)fWords.get(buffer); - + if (token !is null) return token;
--- a/dwtx/jface/text/rules/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta name="Author" content="IBM"> - <meta name="GENERATOR" content="Mozilla/4.51 [en] (WinNT; I) [Netscape]"> - <title>Package-level Javadoc</title> -</head> -<body> -Provides a framework for rule based text scanning -and uses the framework to provide rule-driven default implementations of -<tt>IPresentationDamager</tt>, <tt>IPresentationRepairer</tt> and <tt>IDocumentPartitioner</tt>. -<h2> -Package Specification</h2> -<tt>RuleBasedScanner</tt> is a document-based scanner controlled by <tt>IRule</tt> -objects. When evaluated an <tt>IRule</tt> always returns an <tt>IToken</tt>. -The package provides a set of rules whereby <tt>PatternRule</tt> is the -most important one. <tt>PatternRule</tt> defines a pattern-configurable -rule. -</body> -</html>
--- a/dwtx/jface/text/source/AnnotationBarHoverManager.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/AnnotationBarHoverManager.d Mon Sep 08 00:51:37 2008 +0200 @@ -400,7 +400,7 @@ public this(IVerticalRulerInfo rulerInfo, ISourceViewer sourceViewer, IAnnotationHover annotationHover, IInformationControlCreator creator) { super(creator); - Assert.isNotNull(sourceViewer); + Assert.isNotNull(cast(Object)sourceViewer); fSourceViewer= sourceViewer; fVerticalRulerInfo= rulerInfo; @@ -419,7 +419,7 @@ MouseEvent event= getHoverEvent(); IAnnotationHover hover= getHover(event); if (hover is null) { - setInformation(null, null); + setInformation(cast(Object)null, null); return; } @@ -433,7 +433,7 @@ if (range !is null) setInformation(extension.getHoverInfo(fSourceViewer, range, computeNumberOfVisibleLines()), computeArea(range)); else - setInformation(null, null); + setInformation(cast(Object)null, null); } else { setCustomInformationControlCreator(null); @@ -815,35 +815,35 @@ public InternalAccessor getInternalAccessor() { return new class() InternalAccessor { public IInformationControl getCurrentInformationControl() { - return outer.superGetInternalAccessor().getCurrentInformationControl(); + return this.outer.superGetInternalAccessor().getCurrentInformationControl(); } public void setInformationControlReplacer(InformationControlReplacer replacer) { - outer.superGetInternalAccessor().setInformationControlReplacer(replacer); + this.outer.superGetInternalAccessor().setInformationControlReplacer(replacer); } public InformationControlReplacer getInformationControlReplacer() { - return outer.superGetInternalAccessor().getInformationControlReplacer(); + return this.outer.superGetInternalAccessor().getInformationControlReplacer(); } public bool canReplace(IInformationControl control) { - return outer.superGetInternalAccessor().canReplace(control); + return this.outer.superGetInternalAccessor().canReplace(control); } public bool isReplaceInProgress() { - return outer.superGetInternalAccessor().isReplaceInProgress(); + return this.outer.superGetInternalAccessor().isReplaceInProgress(); } public void replaceInformationControl(bool takeFocus) { - outer.superGetInternalAccessor().replaceInformationControl(takeFocus); + this.outer.superGetInternalAccessor().replaceInformationControl(takeFocus); } public void cropToClosestMonitor(Rectangle bounds) { - outer.superGetInternalAccessor().cropToClosestMonitor(bounds); + this.outer.superGetInternalAccessor().cropToClosestMonitor(bounds); } public void setHoverEnrichMode(ITextViewerExtension8_EnrichMode mode) { - outer.superGetInternalAccessor().setHoverEnrichMode(mode); + this.outer.superGetInternalAccessor().setHoverEnrichMode(mode); } public bool getAllowMouseExit() {
--- a/dwtx/jface/text/source/AnnotationMap.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/AnnotationMap.d Mon Sep 08 00:51:37 2008 +0200 @@ -102,7 +102,7 @@ * The internal lock object used if <code>fLockObject</code> is <code>null</code>. * @since 3.2 */ - private const Object fInternalLockObject= new Object(); + private const Object fInternalLockObject; /** The map holding the annotations */ private Map fInternalMap; @@ -113,6 +113,7 @@ * @param capacity the capacity */ public this(int capacity) { + fInternalLockObject= new Object(); fInternalMap= new HashMap(capacity); } @@ -257,4 +258,34 @@ return fInternalMap.values(); } } + + /// DWT extension of Collection interfaces + + public bool containsKey(String key) { + return containsKey(stringcast(key)); + } + public Object get(String key) { + return get(stringcast(key)); + } + public Object put(String key, String value) { + return put(stringcast(key), stringcast(value)); + } + public Object put(Object key, String value) { + return put(key, stringcast(value)); + } + public Object put(String key, Object value) { + return put(stringcast(key), value); + } + public Object remove(String key) { + return remove(stringcast(key)); + } + public int opApply (int delegate(ref Object value) dg){ + implMissing(__FILE__,__LINE__); + return 0; + } + public int opApply (int delegate(ref Object key, ref Object value) dg){ + implMissing(__FILE__,__LINE__); + return 0; + } + }
--- a/dwtx/jface/text/source/AnnotationModel.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/AnnotationModel.d Mon Sep 08 00:51:37 2008 +0200 @@ -76,6 +76,8 @@ import dwt.dwthelper.utils; import dwtx.dwtxhelper.Collection; +import tango.core.Exception; +import tango.core.Thread; import dwtx.core.runtime.Assert; import dwtx.jface.text.AbstractDocument; @@ -151,7 +153,7 @@ */ public Object next() { if (!hasNext()) - throw new NoSuchElementException(); + throw new NoSuchElementException(null); Object result= fNext; fNext= findNext(); @@ -289,7 +291,7 @@ public Object next() { if (!hasNext()) - throw new NoSuchElementException(); + throw new NoSuchElementException(null); Object element= fCurrentElement; fCurrentElement= null; @@ -344,7 +346,7 @@ * The model's attachment. * @since 3.0 */ - private Map fAttachments= new HashMap(); + private Map fAttachments; /** * The annotation model listener on attached sub-models. * @since 3.0 @@ -365,6 +367,7 @@ * manage any annotations and is not connected to any document. */ public this() { + fAttachments= new HashMap(); fModelListener= new InternalModelListener(); fModificationStamp= new Object(); fAnnotations= new AnnotationMap(10); @@ -460,7 +463,7 @@ * invalid position * @since 3.0 */ - protected void replaceAnnotations(Annotation[] annotationsToRemove, Map annotationsToAdd, bool fireModelChanged) { + protected void replaceAnnotations(Annotation[] annotationsToRemove, Map annotationsToAdd, bool fireModelChanged_) { if (annotationsToRemove !is null) { for (int i= 0, length= annotationsToRemove.length; i < length; i++) @@ -477,7 +480,7 @@ } } - if (fireModelChanged) + if (fireModelChanged_) fireModelChanged(); } @@ -492,7 +495,7 @@ * @param fireModelChanged indicates whether to notify all model listeners * @throws BadLocationException if the position is not a valid document position */ - protected void addAnnotation(Annotation annotation, Position position, bool fireModelChanged) { + protected void addAnnotation(Annotation annotation, Position position, bool fireModelChanged_) { if (!fAnnotations.containsKey(annotation)) { addPosition(fDocument, position); @@ -502,7 +505,7 @@ getAnnotationModelEvent().annotationAdded(annotation); } - if (fireModelChanged) + if (fireModelChanged_) fireModelChanged(); } } @@ -511,8 +514,8 @@ * @see dwtx.jface.text.source.IAnnotationModel#addAnnotationModelListener(dwtx.jface.text.source.IAnnotationModelListener) */ public void addAnnotationModelListener(IAnnotationModelListener listener) { - if (!fAnnotationModelListeners.contains(listener)) { - fAnnotationModelListeners.add(listener); + if (!fAnnotationModelListeners.contains(cast(Object)listener)) { + fAnnotationModelListeners.add(cast(Object)listener); if ( cast(IAnnotationModelListenerExtension)listener ) { IAnnotationModelListenerExtension extension= cast(IAnnotationModelListenerExtension) listener; AnnotationModelEvent event= createAnnotationModelEvent(); @@ -686,13 +689,13 @@ * @param fireModelChanged indicates whether to notify all model listeners * @param modelInitiated indicates whether this changes has been initiated by this model */ - protected void removeAnnotations(List annotations, bool fireModelChanged, bool modelInitiated) { + protected void removeAnnotations(List annotations, bool fireModelChanged_, bool modelInitiated) { if (annotations.size() > 0) { Iterator e= annotations.iterator(); while (e.hasNext()) removeAnnotation(cast(Annotation) e.next(), false); - if (fireModelChanged) + if (fireModelChanged_) fireModelChanged(); } } @@ -703,8 +706,8 @@ * * @param fireModelChanged indicates whether to notify all model listeners */ - protected void cleanup(bool fireModelChanged) { - cleanup(fireModelChanged, true); + protected void cleanup(bool fireModelChanged_) { + cleanup(fireModelChanged_, true); } /** @@ -716,7 +719,7 @@ * @param forkNotification <code>true</code> iff notification should be done in a new thread * @since 3.0 */ - private void cleanup(bool fireModelChanged, bool forkNotification) { + private void cleanup(bool fireModelChanged_, bool forkNotification) { if (fDocumentChanged) { fDocumentChanged= false; @@ -729,14 +732,14 @@ deleted.add(a); } - if (fireModelChanged && forkNotification) { + if (fireModelChanged_ && forkNotification) { removeAnnotations(deleted, false, false); synchronized (getLockObject()) { if (fModelEvent !is null) - (new Thread ( &fireModelChanged() )).start(); + (new Thread ( &fireModelChanged )).start(); } } else - removeAnnotations(deleted, fireModelChanged, false); + removeAnnotations(deleted, fireModelChanged_, false); } } @@ -759,12 +762,12 @@ return regionIterator; List iterators= new ArrayList(fAttachments.size() + 1); - iterators.add(regionIterator); + iterators.add(cast(Object)regionIterator); Iterator it= fAttachments.keySet().iterator(); while (it.hasNext()) { IAnnotationModel attachment= cast(IAnnotationModel) fAttachments.get(it.next()); if ( cast(IAnnotationModelExtension2)attachment ) - iterators.add((cast(IAnnotationModelExtension2) attachment).getAnnotationIterator(offset, length, canStartBefore, canEndAfter)); + iterators.add(cast(Object)(cast(IAnnotationModelExtension2) attachment).getAnnotationIterator(offset, length, canStartBefore, canEndAfter)); else iterators.add(new RegionIterator(attachment.getAnnotationIterator(), attachment, offset, length, canStartBefore, canEndAfter)); } @@ -817,10 +820,10 @@ return iter; List iterators= new ArrayList(fAttachments.size() + 1); - iterators.add(iter); + iterators.add(cast(Object)iter); Iterator it= fAttachments.keySet().iterator(); while (it.hasNext()) - iterators.add((cast(IAnnotationModel) fAttachments.get(it.next())).getAnnotationIterator()); + iterators.add(cast(Object)(cast(IAnnotationModel) fAttachments.get(it.next())).getAnnotationIterator()); return new MetaIterator(iterators.iterator()); } @@ -833,8 +836,8 @@ * @param cleanup indicates whether annotations with deleted associated positions are removed * @return all annotations managed by this model */ - protected Iterator getAnnotationIterator(bool cleanup) { - if (cleanup) + protected Iterator getAnnotationIterator(bool cleanup_) { + if (cleanup_) cleanup(true); return getAnnotationMap().keySetIterator(); @@ -868,7 +871,7 @@ * * @param fireModelChanged indicates whether to notify all model listeners */ - protected void removeAllAnnotations(bool fireModelChanged) { + protected void removeAllAnnotations(bool fireModelChanged_) { if (fDocument !is null) { Iterator e= getAnnotationMap().keySetIterator(); @@ -886,7 +889,7 @@ fAnnotations.clear(); fPositions.clear(); - if (fireModelChanged) + if (fireModelChanged_) fireModelChanged(); } @@ -904,7 +907,7 @@ * @param annotation the annotation to be removed * @param fireModelChanged indicates whether to notify all model listeners */ - protected void removeAnnotation(Annotation annotation, bool fireModelChanged) { + protected void removeAnnotation(Annotation annotation, bool fireModelChanged_) { if (fAnnotations.containsKey(annotation)) { Position p= null; @@ -920,7 +923,7 @@ getAnnotationModelEvent().annotationRemoved(annotation, p); } - if (fireModelChanged) + if (fireModelChanged_) fireModelChanged(); } } @@ -949,9 +952,9 @@ * @param fireModelChanged indicates whether to notify all model listeners * @since 3.0 */ - protected void modifyAnnotationPosition(Annotation annotation, Position position, bool fireModelChanged) { + protected void modifyAnnotationPosition(Annotation annotation, Position position, bool fireModelChanged_) { if (position is null) { - removeAnnotation(annotation, fireModelChanged); + removeAnnotation(annotation, fireModelChanged_); } else { Position p= cast(Position) fAnnotations.get(annotation); if (p !is null) { @@ -969,12 +972,12 @@ synchronized (getLockObject()) { getAnnotationModelEvent().annotationChanged(annotation); } - if (fireModelChanged) + if (fireModelChanged_) fireModelChanged(); } else { try { - addAnnotation(annotation, position, fireModelChanged); + addAnnotation(annotation, position, fireModelChanged_); } catch (BadLocationException x) { // ignore invalid position } @@ -993,12 +996,12 @@ * @param fireModelChanged indicates whether to notify all model listeners * @since 3.0 */ - protected void modifyAnnotation(Annotation annotation, bool fireModelChanged) { + protected void modifyAnnotation(Annotation annotation, bool fireModelChanged_) { if (fAnnotations.containsKey(annotation)) { synchronized (getLockObject()) { getAnnotationModelEvent().annotationChanged(annotation); } - if (fireModelChanged) + if (fireModelChanged_) fireModelChanged(); } } @@ -1007,7 +1010,7 @@ * @see IAnnotationModel#removeAnnotationModelListener(IAnnotationModelListener) */ public void removeAnnotationModelListener(IAnnotationModelListener listener) { - fAnnotationModelListeners.remove(listener); + fAnnotationModelListeners.remove(cast(Object)listener); } /* @@ -1015,9 +1018,9 @@ * @since 3.0 */ public void addAnnotationModel(Object key, IAnnotationModel attachment) { - Assert.isNotNull(attachment); - if (!fAttachments.containsValue(attachment)) { - fAttachments.put(key, attachment); + Assert.isNotNull(cast(Object)attachment); + if (!fAttachments.containsValue(cast(Object)attachment)) { + fAttachments.put(key, cast(Object)attachment); for (int i= 0; i < fOpenConnections; i++) attachment.connect(fDocument); attachment.addAnnotationModelListener(fModelListener);
--- a/dwtx/jface/text/source/AnnotationModelEvent.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/AnnotationModelEvent.d Mon Sep 08 00:51:37 2008 +0200 @@ -106,17 +106,17 @@ * The added annotations. * @since 3.0 */ - private Set fAddedAnnotations= new HashSet(); + private Set fAddedAnnotations; /** * The removed annotations. * @since 3.0 */ - private Map fRemovedAnnotations= new HashMap(); + private Map fRemovedAnnotations; /** * The changed annotations. * @since 3.0 */ - private Set fChangedAnnotations= new HashSet(); + private Set fChangedAnnotations; /** * Indicates that this event does not contain detailed information. * @since 3.0 @@ -145,6 +145,10 @@ * @since 3.0 */ public this(IAnnotationModel model, bool isWorldChange) { + fAddedAnnotations= new HashSet(); + fRemovedAnnotations= new HashMap(); + fChangedAnnotations= new HashSet(); + fAnnotationModel= model; fIsWorldChange= isWorldChange; }
--- a/dwtx/jface/text/source/AnnotationPainter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/AnnotationPainter.d Mon Sep 08 00:51:37 2008 +0200 @@ -74,20 +74,10 @@ import dwtx.jface.text.source.OverviewRuler; // packageimport import dwtx.jface.text.source.OverviewRulerHoverManager; // packageimport - import dwt.dwthelper.utils; - - import dwtx.dwtxhelper.Collection; - - - - - - - - - +import tango.text.convert.Format; +import tango.io.Stdout; import dwt.DWT; import dwt.DWTException; @@ -222,11 +212,11 @@ int leftX= left.x; // compute (number of point) * 2 - int length= ((2 * peaks) + 1) * 2; - if (length < 0) + int length_= ((2 * peaks) + 1) * 2; + if (length_ < 0) return new int[0]; - int[] coordinates= new int[length]; + int[] coordinates= new int[length_]; // cache peeks' y-coordinates int top= left.y + Math.min(baseline + 1, lineHeight - HEIGHT - 1); @@ -242,8 +232,8 @@ } // the last down flank is missing - coordinates[length-2]= Math.min(Math.max(0, right.x - 1), left.x + (WIDTH * peaks)); - coordinates[length-1]= bottom; + coordinates[length_-2]= Math.min(Math.max(0, right.x - 1), left.x + (WIDTH * peaks)); + coordinates[length_-1]= bottom; return coordinates; } @@ -342,7 +332,14 @@ * Implementation of <code>IRegion</code> that can be reused * by setting the offset and the length. */ - private static class ReusableRegion : Position , IRegion {} + private static class ReusableRegion : Position , IRegion { + public override int getOffset(){ + return super.getOffset(); + } + public override int getLength(){ + return super.getLength(); + } + } /** * Tells whether this class is in debug mode. @@ -362,7 +359,18 @@ * The squiggly painter strategy. * @since 3.0 */ - private static const IDrawingStrategy SQUIGGLES_STRATEGY= new SquigglesStrategy(); + private static IDrawingStrategy SQUIGGLES_STRATEGY_; + private static IDrawingStrategy SQUIGGLES_STRATEGY(){ + if( SQUIGGLES_STRATEGY_ is null ){ + synchronized( AnnotationPainter.classinfo ){ + if( SQUIGGLES_STRATEGY_ is null ){ + SQUIGGLES_STRATEGY_ = new SquigglesStrategy(); + } + } + } + return SQUIGGLES_STRATEGY_; + } + /** * This strategy is used to mark the <code>null</code> value in the chache @@ -370,25 +378,65 @@ * * @since 3.4 */ - private static const IDrawingStrategy NULL_STRATEGY= new NullStrategy(); + private static IDrawingStrategy NULL_STRATEGY_; + private static IDrawingStrategy NULL_STRATEGY(){ + if( NULL_STRATEGY_ is null ){ + synchronized( AnnotationPainter.classinfo ){ + if( NULL_STRATEGY_ is null ){ + NULL_STRATEGY_= new NullStrategy(); + } + } + } + return NULL_STRATEGY_; + } /** * The squiggles painter id. * @since 3.0 */ - private static const Object SQUIGGLES= new Object(); + private static Object SQUIGGLES_; + private static Object SQUIGGLES(){ + if( SQUIGGLES_ is null ){ + synchronized( AnnotationPainter.classinfo ){ + if( SQUIGGLES_ is null ){ + SQUIGGLES_= new Object(); + } + } + } + return SQUIGGLES_; + } /** * The squiggly painter strategy. * * @since 3.4 */ - private static const ITextStyleStrategy HIGHLIGHTING_STRATEGY= new HighlightingStrategy(); + private static ITextStyleStrategy HIGHLIGHTING_STRATEGY_; + private static ITextStyleStrategy HIGHLIGHTING_STRATEGY(){ + if( HIGHLIGHTING_STRATEGY_ is null ){ + synchronized( AnnotationPainter.classinfo ){ + if( HIGHLIGHTING_STRATEGY_ is null ){ + HIGHLIGHTING_STRATEGY_= new HighlightingStrategy(); + } + } + } + return HIGHLIGHTING_STRATEGY_; + } /** * The highlighting text style strategy id. * * @since 3.4 */ - private static const Object HIGHLIGHTING= new Object(); + private static Object HIGHLIGHTING_; + private static Object HIGHLIGHTING(){ + if( HIGHLIGHTING_ is null ){ + synchronized( AnnotationPainter.classinfo ){ + if( HIGHLIGHTING_ is null ){ + HIGHLIGHTING_= new Object(); + } + } + } + return HIGHLIGHTING_; + } /** * The presentation information (decoration) for an annotation. Each such @@ -431,34 +479,34 @@ * The map with decorations * @since 3.0 */ - private Map fDecorationsMap= new HashMap(); // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=50767 + private Map fDecorationsMap; // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=50767 /** * The map with of highlighted decorations. * @since 3.0 */ - private Map fHighlightedDecorationsMap= new HashMap(); // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=50767 + private Map fHighlightedDecorationsMap; /** * Mutex for highlighted decorations map. * @since 3.0 */ - private Object fDecorationMapLock= new Object(); + private Object fDecorationMapLock; /** * Mutex for for decorations map. * @since 3.0 */ - private Object fHighlightedDecorationsMapLock= new Object(); + private Object fHighlightedDecorationsMapLock; /** * Maps an annotation type to its registered color. * * @see #setAnnotationTypeColor(Object, Color) */ - private Map fAnnotationType2Color= new HashMap(); + private Map fAnnotationType2Color; /** * Cache that maps the annotation type to its color. * @since 3.4 */ - private Map fCachedAnnotationType2Color= new HashMap(); + private Map fCachedAnnotationType2Color; /** * The range in which the current highlight annotations can be found. * @since 3.0 @@ -497,25 +545,25 @@ * @see #addAnnotationType(Object, Object) * @since 3.0 */ - private Map fAnnotationType2PaintingStrategyId= new HashMap(); + private Map fAnnotationType2PaintingStrategyId; /** * Maps annotation types to painting strategy identifiers. * @since 3.4 */ - private Map fCachedAnnotationType2PaintingStrategy= new HashMap(); + private Map fCachedAnnotationType2PaintingStrategy; /** * Maps painting strategy identifiers to painting strategies. * * @since 3.0 */ - private Map fPaintingStrategyId2PaintingStrategy= new HashMap(); + private Map fPaintingStrategyId2PaintingStrategy; /** * Reuse this region for performance reasons. * @since 3.3 */ - private ReusableRegion fReusableRegion= new ReusableRegion(); + private ReusableRegion fReusableRegion; /** * Creates a new annotation painter for the given source viewer and with the @@ -526,13 +574,24 @@ * @param access the annotation access for this painter */ public this(ISourceViewer sourceViewer, IAnnotationAccess access) { + fDecorationsMap= new HashMap(); // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=50767 + fHighlightedDecorationsMap= new HashMap(); // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=50767 + fDecorationMapLock= new Object(); + fHighlightedDecorationsMapLock= new Object(); + fAnnotationType2Color= new HashMap(); + fCachedAnnotationType2Color= new HashMap(); + fReusableRegion= new ReusableRegion(); + fAnnotationType2PaintingStrategyId= new HashMap(); + fCachedAnnotationType2PaintingStrategy= new HashMap(); + fPaintingStrategyId2PaintingStrategy= new HashMap(); + fSourceViewer= sourceViewer; fAnnotationAccess= access; fTextWidget= sourceViewer.getTextWidget(); // default drawing strategies: squiggles were the only decoration style before version 3.0 - fPaintingStrategyId2PaintingStrategy.put(SQUIGGLES, SQUIGGLES_STRATEGY); - fPaintingStrategyId2PaintingStrategy.put(HIGHLIGHTING, HIGHLIGHTING_STRATEGY); + fPaintingStrategyId2PaintingStrategy.put(SQUIGGLES, cast(Object)SQUIGGLES_STRATEGY); + fPaintingStrategyId2PaintingStrategy.put(HIGHLIGHTING, cast(Object)HIGHLIGHTING_STRATEGY); } /** @@ -909,7 +968,7 @@ if (paintingStrategy is null || cast(NullStrategy)paintingStrategy ) return null; - Color color= getColor(type); + Color color= getColor(stringcast(type)); if (color is null) return null; @@ -954,7 +1013,7 @@ if ( cast(IAnnotationAccessExtension)fAnnotationAccess ) { IAnnotationAccessExtension ext = cast(IAnnotationAccessExtension) fAnnotationAccess; - Object[] sts = ext.getSupertypes(type); + Object[] sts = ext.getSupertypes(stringcast(type)); for (int i= 0; i < sts.length; i++) { strategy= fPaintingStrategyId2PaintingStrategy.get(fAnnotationType2PaintingStrategyId.get(sts[i])); if (strategy !is null) { @@ -964,7 +1023,7 @@ } } - fCachedAnnotationType2PaintingStrategy.put(type, NULL_STRATEGY); + fCachedAnnotationType2PaintingStrategy.put(type, cast(Object)NULL_STRATEGY); return null; } @@ -1032,7 +1091,7 @@ if ( cast(ITextViewerExtension2)fSourceViewer ) { if (DEBUG) - System.out_.println("AP: invalidating offset: " + r.getOffset() + ", length= " + r.getLength()); //$NON-NLS-1$ //$NON-NLS-2$ + System.out_.println(Format("AP: invalidating offset: {}, length= {}", r.getOffset(), r.getLength())); //$NON-NLS-1$ //$NON-NLS-2$ (cast(ITextViewerExtension2)fSourceViewer).invalidateTextPresentation(r.getOffset(), r.getLength()); @@ -1058,7 +1117,7 @@ IRegion region= tp.getExtent(); if (DEBUG) - System.out_.println("AP: applying text presentation offset: " + region.getOffset() + ", length= " + region.getLength()); //$NON-NLS-1$ //$NON-NLS-2$ + System.out_.println(Format("AP: applying text presentation offset: {}, length= {}", region.getOffset(), region.getLength())); //$NON-NLS-1$ //$NON-NLS-2$ for (int layer= 0, maxLayer= 1; layer < maxLayer; layer++) { @@ -1146,7 +1205,7 @@ // changes any more. If the document gets modified between // now and running the posted runnable, the position information // is not accurate any longer. - textWidgetDisplay.asyncExec( dgRunnable( (Event event_){ + textWidgetDisplay.asyncExec( dgRunnable( (AnnotationModelEvent event_){ if (fTextWidget !is null && !fTextWidget.isDisposed()) updatePainting(event_); }, event )); @@ -1227,8 +1286,8 @@ // don't permit null as null is used to signal that an annotation type is not // registered with a specific strategy, and that its annotation hierarchy should be searched if (id is null) - throw new IllegalArgumentException(); - fPaintingStrategyId2PaintingStrategy.put(id, strategy); + throw new IllegalArgumentException(null); + fPaintingStrategyId2PaintingStrategy.put(id, cast(Object)strategy); fCachedAnnotationType2PaintingStrategy.clear(); } @@ -1249,8 +1308,8 @@ // don't permit null as null is used to signal that an annotation type is not // registered with a specific strategy, and that its annotation hierarchy should be searched if (id is null) - throw new IllegalArgumentException(); - fPaintingStrategyId2PaintingStrategy.put(id, strategy); + throw new IllegalArgumentException(null); + fPaintingStrategyId2PaintingStrategy.put(id, cast(Object)strategy); fCachedAnnotationType2PaintingStrategy.clear(); } @@ -1450,7 +1509,7 @@ // ensure sized appropriately for (int i= toBeDrawn.size(); i <= pp.fLayer; i++) toBeDrawn.add(new LinkedList()); - (cast(List) toBeDrawn.get(pp.fLayer)).add(entry); + (cast(List) toBeDrawn.get(pp.fLayer)).add(cast(Object)entry); } } IDocument document= fSourceViewer.getDocument();
--- a/dwtx/jface/text/source/AnnotationRulerColumn.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/AnnotationRulerColumn.d Mon Sep 08 00:51:37 2008 +0200 @@ -163,7 +163,14 @@ * Implementation of <code>IRegion</code> that can be reused * by setting the offset and the length. */ - private static class ReusableRegion : Position , IRegion {} + private static class ReusableRegion : Position , IRegion { + public override int getLength(){ + return super.getLength(); + } + public override int getOffset(){ + return super.getOffset(); + } + } /** * Pair of an annotation and their associated position. Used inside the paint method @@ -423,6 +430,9 @@ */ private Canvas createCanvas(Composite parent) { return new class(parent, DWT.NO_BACKGROUND | DWT.NO_FOCUS) Canvas { + this( Composite p, int s ){ + super(p,s); + } /* * @see dwt.widgets.Control#addMouseListener(dwt.events.MouseListener) * @since 3.0 @@ -967,7 +977,7 @@ * @since 3.0 */ private bool skip(Annotation annotation) { - Object annotationType= annotation.getType(); + Object annotationType= stringcast(annotation.getType()); Boolean allowed= cast(Boolean) fAllowedAnnotationTypes.get(annotationType); if (allowed !is null) return !allowed.booleanValue();
--- a/dwtx/jface/text/source/ChangeRulerColumn.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/ChangeRulerColumn.d Mon Sep 08 00:51:37 2008 +0200 @@ -186,12 +186,12 @@ /** * The view(port) listener. */ - private const InternalListener fInternalListener; + private /+const+/ InternalListener fInternalListener; /** * The mouse handler. * @since 3.2 */ - private const MouseHandler fMouseHandler; + private /+const+/ MouseHandler fMouseHandler; /** * The revision painter. * @since 3.2 @@ -248,7 +248,7 @@ */ public this(ISharedTextColors sharedColors) { instanceInit(); - Assert.isNotNull(sharedColors); + Assert.isNotNull(cast(Object)sharedColors); fRevisionPainter= new RevisionPainter(this, sharedColors); fDiffPainter= new DiffPainter(this, null); // no shading } @@ -603,7 +603,7 @@ if (lastLine < bottomLine || bottomLine is -1) bottomLine= lastLine; } catch (BadLocationException x) { - x.printStackTrace(); + ExceptionPrintStackTrace(x); return null; }
--- a/dwtx/jface/text/source/CompositeRuler.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/CompositeRuler.d Mon Sep 08 00:51:37 2008 +0200 @@ -187,7 +187,7 @@ } /** The list of listeners added to this canvas. */ - private List fCachedListeners= new ArrayList(); + private List fCachedListeners; /** * Internal listener for opening the context menu. * @since 3.0 @@ -201,6 +201,8 @@ * @param style the DWT styles */ public this(Composite parent, int style) { + fCachedListeners= new ArrayList(); + super(parent, style); fMenuDetectListener= new class() Listener { public void handleEvent(Event event) { @@ -356,7 +358,7 @@ int length= fCachedListeners.size(); for (int i= 0; i < length; i++) { ListenerInfo info= cast(ListenerInfo) fCachedListeners.get(i); - if (listener is info.fListener && clazz.equals(info.fClass)) { + if (listener is info.fListener && clazz.opEquals(info.fClass)) { fCachedListeners.remove(i); break; } @@ -569,9 +571,9 @@ /** The ruler's annotation model */ private IAnnotationModel fModel; /** The list of columns */ - private List fDecorators= new ArrayList(2); + private List fDecorators; /** The cached location of the last mouse button activity */ - private Point fLocation= new Point(-1, -1); + private Point fLocation; /** The cached line of the list mouse button activity */ private int fLastMouseButtonActivityLine= -1; /** The gap between the individual columns of this composite ruler */ @@ -580,7 +582,7 @@ * The set of annotation listeners. * @since 3.0 */ - private Set fAnnotationListeners= new HashSet(); + private Set fAnnotationListeners; /** @@ -596,6 +598,10 @@ * @param gap */ public this(int gap) { + fDecorators= new ArrayList(2); + fLocation= new Point(-1, -1); + fAnnotationListeners= new HashSet(); + fGap= gap; } @@ -610,9 +616,9 @@ rulerColumn.setModel(getModel()); if (index > fDecorators.size()) - fDecorators.add(rulerColumn); + fDecorators.add(cast(Object)rulerColumn); else - fDecorators.add(index, rulerColumn); + fDecorators.add(index, cast(Object)rulerColumn); if (fComposite !is null && !fComposite.isDisposed()) { rulerColumn.createControl(this, fComposite); @@ -638,7 +644,7 @@ * @since 3.0 */ public void removeDecorator(IVerticalRulerColumn rulerColumn) { - fDecorators.remove(rulerColumn); + fDecorators.remove(cast(Object)rulerColumn); if (rulerColumn !is null) { Control cc= rulerColumn.getControl(); if (cc !is null && !cc.isDisposed()) { @@ -848,7 +854,7 @@ * @since 3.0 */ public Iterator getDecoratorIterator() { - Assert.isNotNull(fDecorators, "fDecorators must be initialized"); //$NON-NLS-1$ + Assert.isNotNull(cast(Object)fDecorators, "fDecorators must be initialized"); //$NON-NLS-1$ return fDecorators.iterator(); } @@ -865,7 +871,7 @@ * @since 3.0 */ public void addVerticalRulerListener(IVerticalRulerListener listener) { - fAnnotationListeners.add(listener); + fAnnotationListeners.add(cast(Object)listener); } /* @@ -873,7 +879,7 @@ * @since 3.0 */ public void removeVerticalRulerListener(IVerticalRulerListener listener) { - fAnnotationListeners.remove(listener); + fAnnotationListeners.remove(cast(Object)listener); } /**
--- a/dwtx/jface/text/source/DefaultAnnotationHover.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/DefaultAnnotationHover.d Mon Sep 08 00:51:37 2008 +0200 @@ -151,7 +151,7 @@ } if (messages.size() is 1) - return formatSingleMessage(cast(String)messages.get(0)); + return formatSingleMessage(stringcast(messages.get(0))); if (messages.size() > 1) return formatMultipleMessages(messages); @@ -159,7 +159,7 @@ } if (fShowLineNumber && lineNumber > -1) - return JFaceTextMessages.getFormattedString("DefaultAnnotationHover.lineNumber", Integer.toString(lineNumber + 1) ); //$NON-NLS-1$ + return JFaceTextMessages.getFormattedString("DefaultAnnotationHover.lineNumber", stringcast(Integer.toString(lineNumber + 1)) ); //$NON-NLS-1$ return null; } @@ -206,8 +206,8 @@ Iterator e= messages.iterator(); while (e.hasNext()) { buffer.append('\n'); - String listItemText= cast(String) e.next(); - buffer.append(JFaceTextMessages.getFormattedString("DefaultAnnotationHover.listItem", listItemText )); //$NON-NLS-1$ + String listItemText= stringcast( e.next()); + buffer.append(JFaceTextMessages.getFormattedString("DefaultAnnotationHover.listItem", stringcast(listItemText ))); //$NON-NLS-1$ } return buffer.toString(); } @@ -233,7 +233,7 @@ private bool isDuplicateAnnotation(Map messagesAtPosition, Position position, String message) { if (messagesAtPosition.containsKey(position)) { Object value= messagesAtPosition.get(position); - if (message.equals(value)) + if (message==/++/stringcast(value)) return true; if ( cast(List)value ) {
--- a/dwtx/jface/text/source/IAnnotationAccessExtension.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/IAnnotationAccessExtension.d Mon Sep 08 00:51:37 2008 +0200 @@ -100,7 +100,7 @@ /** * The default annotation layer. */ - static final int DEFAULT_LAYER= IAnnotationPresentation.DEFAULT_LAYER; + static const int DEFAULT_LAYER= IAnnotationPresentation.DEFAULT_LAYER; /** * Returns the label for the given annotation's type.
--- a/dwtx/jface/text/source/IAnnotationPresentation.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/IAnnotationPresentation.d Mon Sep 08 00:51:37 2008 +0200 @@ -91,7 +91,7 @@ /** * The default annotation layer. */ - static final int DEFAULT_LAYER= 0; + static const int DEFAULT_LAYER= 0; /**
--- a/dwtx/jface/text/source/ILineDiffInfo.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/ILineDiffInfo.d Mon Sep 08 00:51:37 2008 +0200 @@ -91,13 +91,13 @@ public interface ILineDiffInfo { /** Denotes an unchanged line. */ - static final int UNCHANGED= 0; + static const int UNCHANGED= 0; /** Denotes an added line. */ - static final int ADDED= 1; + static const int ADDED= 1; /** Denotes a changed line. */ - static final int CHANGED= 2; + static const int CHANGED= 2; /** * Returns the number of deleted lines after this line.
--- a/dwtx/jface/text/source/ISourceViewer.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/ISourceViewer.d Mon Sep 08 00:51:37 2008 +0200 @@ -148,7 +148,7 @@ * Text operation code for requesting information at the current insertion position. * @since 2.0 */ - static const int INFORMATION= ITextOperationTarget.STRIP_PREFIX + 4; + static const int INFORMATION = ITextOperationTarget.STRIP_PREFIX + 4; /* * XXX: Cannot continue numbering due to operation codes used in ProjectionViewer
--- a/dwtx/jface/text/source/LineChangeHover.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/LineChangeHover.d Mon Sep 08 00:51:37 2008 +0200 @@ -118,8 +118,10 @@ StringBuffer sb= new StringBuffer(content); final String tabReplacement= getTabReplacement(); for (int pos= 0; pos < sb.length(); pos++) { - if (sb.charAt(pos) is '\t') - sb.replace(pos, pos + 1, tabReplacement); + if (sb.slice()[pos] is '\t'){ + sb.select( pos, pos + 1); + sb.replace(tabReplacement); + } } return sb.toString(); } @@ -159,7 +161,7 @@ for (int l= first; l <= last; l++) { ILineDiffInfo info= differ.getLineInfo(l); if (info !is null) - lines.add(info); + lines.add(cast(Object)info); } return decorateText(lines, maxLines); @@ -192,7 +194,7 @@ if (type is ILineDiffInfo.ADDED) added++; else if (type is ILineDiffInfo.CHANGED) { - text += "> " + (original.length > 0 ? original[i++] : ""); //$NON-NLS-1$ //$NON-NLS-2$ + text ~= "> " ~ (original.length > 0 ? original[i++] : ""); //$NON-NLS-1$ //$NON-NLS-2$ maxLines--; } else if (type is ILineDiffInfo.UNCHANGED) { maxLines++; @@ -200,7 +202,7 @@ if (maxLines is 0) return trimTrailing(text); for (; i < original.length; i++) { - text += "- " + original[i]; //$NON-NLS-1$ + text ~= "- " ~ original[i]; //$NON-NLS-1$ added--; if (--maxLines is 0) return trimTrailing(text); @@ -208,9 +210,9 @@ } text= text.trim(); if (text.length() is 0 && added-- > 0 && maxLines-- > 0) - text += "+ "; //$NON-NLS-1$ + text ~= "+ "; //$NON-NLS-1$ while (added-- > 0 && maxLines-- > 0) - text += "\n+ "; //$NON-NLS-1$ + text ~= "\n+ "; //$NON-NLS-1$ return text; } @@ -240,7 +242,7 @@ return null; if ( cast(IAnnotationModelExtension)model ) { - IAnnotationModel diffModel= (cast(IAnnotationModelExtension)model).getAnnotationModel(IChangeRulerColumn.QUICK_DIFF_MODEL_ID); + IAnnotationModel diffModel= (cast(IAnnotationModelExtension)model).getAnnotationModel(cast(Object)IChangeRulerColumn.QUICK_DIFF_MODEL_ID); if (diffModel !is null) model= diffModel; } @@ -312,7 +314,7 @@ int first= adaptFirstLine(sourceViewer, lineRange.getStartLine()); int last= adaptLastLine(sourceViewer, lineRange.getStartLine() + lineRange.getNumberOfLines() - 1); String content= computeContent(sourceViewer, first, last, visibleLines); - return formatSource(content); + return stringcast(formatSource(content)); } /**
--- a/dwtx/jface/text/source/LineNumberChangeRulerColumn.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/LineNumberChangeRulerColumn.d Mon Sep 08 00:51:37 2008 +0200 @@ -101,19 +101,24 @@ * @since 3.0 */ public final class LineNumberChangeRulerColumn : LineNumberRulerColumn , IVerticalRulerInfo, IVerticalRulerInfoExtension, IChangeRulerColumn, IRevisionRulerColumn, IRevisionRulerColumnExtension { + + public Control getControl() { + return super.getControl(); + } + /** The ruler's annotation model. */ private IAnnotationModel fAnnotationModel; /** <code>true</code> if changes should be displayed using character indications instead of background colors. */ private bool fCharacterDisplay; /** * The revision painter strategy. - * + * * @since 3.2 */ private const RevisionPainter fRevisionPainter; - /** + /** * The diff information painter strategy. - * + * * @since 3.2 */ private const DiffPainter fDiffPainter; @@ -129,11 +134,11 @@ * @param sharedColors the shared colors provider to use */ public this(ISharedTextColors sharedColors) { - Assert.isNotNull(sharedColors); + Assert.isNotNull(cast(Object)sharedColors); fRevisionPainter= new RevisionPainter(this, sharedColors); fDiffPainter= new DiffPainter(this, sharedColors); } - + /* * @see dwtx.jface.text.source.LineNumberRulerColumn#createControl(dwtx.jface.text.source.CompositeRuler, dwt.widgets.Composite) */ @@ -143,7 +148,7 @@ fDiffPainter.setParentRuler(parentRuler); return control; } - + /* * @see dwtx.jface.text.source.IVerticalRulerInfo#getLineOfLastMouseButtonActivity() */ @@ -170,7 +175,7 @@ layout(true); postRedraw(); } - + private void setAnnotationModel(IAnnotationModel model) { if (fAnnotationModel !is model) fAnnotationModel= model; @@ -245,7 +250,7 @@ public void removeVerticalRulerListener(IVerticalRulerListener listener) { throw new UnsupportedOperationException(); } - + /* * @see dwtx.jface.text.source.LineNumberRulerColumn#doPaint(dwt.graphics.GC) */ @@ -261,7 +266,7 @@ if (fShowNumbers || fCharacterDisplay) super.doPaint(gc, visibleLines); } - + /* * @see dwtx.jface.text.source.IVerticalRulerInfoExtension#getHover() */ @@ -311,7 +316,7 @@ public void setDeletedColor(Color deletedColor) { fDiffPainter.setDeletedColor(deletedColor); } - + /* * @see dwtx.jface.text.revisions.IRevisionRulerColumn#setRevisionInformation(dwtx.jface.text.revisions.RevisionInformation) */ @@ -341,7 +346,7 @@ /** * Sets the line number display mode. - * + * * @param showNumbers <code>true</code> to show numbers, <code>false</code> to only show * diff / revision info. * @since 3.3 @@ -367,7 +372,7 @@ /** * Returns <code>true</code> if the ruler is showing line numbers, <code>false</code> * otherwise - * + * * @return <code>true</code> if line numbers are shown, <code>false</code> otherwise * @since 3.3 */ @@ -378,7 +383,7 @@ /** * Returns <code>true</code> if the ruler is showing revision information, <code>false</code> * otherwise - * + * * @return <code>true</code> if revision information is shown, <code>false</code> otherwise * @since 3.3 */ @@ -389,7 +394,7 @@ /** * Returns <code>true</code> if the ruler is showing change information, <code>false</code> * otherwise - * + * * @return <code>true</code> if change information is shown, <code>false</code> otherwise * @since 3.3 */ @@ -436,7 +441,7 @@ public void removeRevisionListener(IRevisionListener listener) { fRevisionPainter.removeRevisionListener(listener); } - + /* * @see dwtx.jface.text.source.LineNumberRulerColumn#handleDispose() * @since 3.3
--- a/dwtx/jface/text/source/LineNumberRulerColumn.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/LineNumberRulerColumn.d Mon Sep 08 00:51:37 2008 +0200 @@ -583,7 +583,7 @@ int lines= document is null ? 0 : document.getNumberOfLines(); int digits= 2; - while (lines > Math.pow(10, digits) -1) { + while (lines > Math.pow(cast(real)10.0, cast(uint)digits) -1) { ++digits; } return digits; @@ -629,7 +629,7 @@ char[] nines= new char[fCachedNumberOfDigits]; Arrays.fill(nines, '9'); - String nineString= new String(nines); + String nineString= new_String(nines); Point p= gc.stringExtent(nineString); fIndentation[0]= p.x; @@ -653,6 +653,9 @@ fCachedTextWidget= fCachedTextViewer.getTextWidget(); fCanvas= new class(parentControl, DWT.NO_FOCUS ) Canvas { + this(Composite c, int s ){ + super(c,s); + } /* * @see dwt.widgets.Control#addMouseListener(dwt.events.MouseListener) * @since 3.4 @@ -877,7 +880,7 @@ int widgetLine= JFaceTextUtil.modelLineToWidgetLine(fCachedTextViewer, line); String s= createDisplayString(line); - int indentation= fIndentation[s.length()]; + int indentation= fIndentation[s.length]; int baselineBias= getBaselineBias(gc, widgetLine); gc.drawString(s, indentation, y + baselineBias, true); }
--- a/dwtx/jface/text/source/MatchingCharacterPainter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/MatchingCharacterPainter.d Mon Sep 08 00:51:37 2008 +0200 @@ -120,7 +120,7 @@ /** The strategy for finding matching characters */ private ICharacterPairMatcher fMatcher; /** The position tracking the matching characters */ - private Position fPairPosition= new Position(0, 0); + private Position fPairPosition; /** The anchor indicating whether the character is left or right of the caret */ private int fAnchor; @@ -135,6 +135,7 @@ * @param matcher */ public this(ISourceViewer sourceViewer, ICharacterPairMatcher matcher) { + fPairPosition= new Position(0, 0); fSourceViewer= sourceViewer; fMatcher= matcher; fTextWidget= sourceViewer.getTextWidget(); @@ -244,7 +245,7 @@ if (gc !is null) { gc.setForeground(fColor); - + Rectangle bounds; if (length > 0) bounds= fTextWidget.getTextBounds(offset, offset + length - 1); @@ -252,7 +253,7 @@ Point loc= fTextWidget.getLocationAtOffset(offset); bounds= new Rectangle(loc.x, loc.y, 1, fTextWidget.getLineHeight(offset)); } - + // draw box around line segment gc.drawRectangle(bounds.x, bounds.y, bounds.width - 1, bounds.height - 1); @@ -308,7 +309,7 @@ // remove old highlighting handleDrawRequest(null); // update position - fPairPosition.isDeleted= false; + fPairPosition.isDeleted_= false; fPairPosition.offset= pair.getOffset(); fPairPosition.length= pair.getLength(); fAnchor= fMatcher.getAnchor(); @@ -320,7 +321,7 @@ fIsActive= true; - fPairPosition.isDeleted= false; + fPairPosition.isDeleted_= false; fPairPosition.offset= pair.getOffset(); fPairPosition.length= pair.getLength(); fAnchor= fMatcher.getAnchor();
--- a/dwtx/jface/text/source/OverviewRuler.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/OverviewRuler.d Mon Sep 08 00:51:37 2008 +0200 @@ -255,8 +255,8 @@ continue; fNext= next; - Object annotationType= next.getType(); - if (fType is null || fType.equals(annotationType) || !fConfiguredAnnotationTypes.contains(annotationType) && isSubtype(annotationType)) { + Object annotationType= stringcast(next.getType()); + if (fType is null || fType.opEquals(annotationType) || !fConfiguredAnnotationTypes.contains(annotationType) && isSubtype(annotationType)) { if (temp && pers) return; if (pers && next.isPersistent()) return; if (temp && !next.isPersistent()) return; @@ -270,7 +270,7 @@ IAnnotationAccessExtension extension= cast(IAnnotationAccessExtension) fAnnotationAccess; return extension.isSubtype(annotationType, fType); } - return fType.equals(annotationType); + return cast(bool) fType.opEquals(annotationType); } /* @@ -1112,6 +1112,9 @@ private bool skip(Object annotationType) { return !contains(annotationType, fAllowedAnnotationTypes, fConfiguredAnnotationTypes); } + private bool skip(String annotationType) { + return !contains(stringcast(annotationType), fAllowedAnnotationTypes, fConfiguredAnnotationTypes); + } /** * Returns whether the given annotation type should be skipped by the drawing routine of the header. @@ -1428,8 +1431,8 @@ if (annotationTypeLabel !is null) { if (overview.length() > 0) - overview += "\n"; //$NON-NLS-1$ - overview += JFaceTextMessages.getFormattedString("OverviewRulerHeader.toolTipTextEntry", annotationTypeLabel, new Integer(count) ); //$NON-NLS-1$ + overview ~= "\n"; //$NON-NLS-1$ + overview ~= JFaceTextMessages.getFormattedString("OverviewRulerHeader.toolTipTextEntry", stringcast(annotationTypeLabel), new Integer(count) ); //$NON-NLS-1$ } }
--- a/dwtx/jface/text/source/SourceViewer.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/SourceViewer.d Mon Sep 08 00:51:37 2008 +0200 @@ -229,7 +229,17 @@ * Key of the model annotation model inside the visual annotation model. * @since 3.0 */ - protected final static Object MODEL_ANNOTATION_MODEL= new Object(); + private static Object MODEL_ANNOTATION_MODEL_; + protected static Object MODEL_ANNOTATION_MODEL(){ + if( MODEL_ANNOTATION_MODEL_ is null ){ + synchronized(SourceViewer.classinfo ){ + if( MODEL_ANNOTATION_MODEL_ is null ){ + MODEL_ANNOTATION_MODEL_ = new Object(); + } + } + } + return MODEL_ANNOTATION_MODEL_; + } /** The viewer's content assistant */ protected IContentAssistant fContentAssistant; @@ -265,7 +275,7 @@ * Stack of saved selections in the underlying document * @since 3.0 */ - protected final Stack fSelections= new Stack(); + protected const Stack fSelections; /** * Position updater for saved selections * @since 3.0 @@ -344,6 +354,7 @@ * @since 2.1 */ public this(Composite parent, IVerticalRuler verticalRuler, IOverviewRuler overviewRuler, bool showAnnotationsOverview, int styles) { + fSelections= new Stack(); super(); fVerticalRuler= verticalRuler; @@ -794,7 +805,7 @@ final IDocument document= getDocument(); if (fSelections.isEmpty()) { - fSelectionCategory= _SELECTION_POSITION_CATEGORY + toHash(); + fSelectionCategory= _SELECTION_POSITION_CATEGORY ~ Integer.toString(toHash()); fSelectionUpdater= new NonDeletingPositionUpdater(fSelectionCategory); document.addPositionCategory(fSelectionCategory); document.addPositionUpdater(fSelectionUpdater); @@ -910,10 +921,10 @@ final IContentFormatterExtension extension= cast(IContentFormatterExtension) fContentFormatter; context= createFormattingContext(); if (selection.y is 0) { - context.setProperty(FormattingContextProperties.CONTEXT_DOCUMENT, Boolean.TRUE); + context.setProperty(stringcast(FormattingContextProperties.CONTEXT_DOCUMENT), Boolean.TRUE); } else { - context.setProperty(FormattingContextProperties.CONTEXT_DOCUMENT, Boolean.FALSE); - context.setProperty(FormattingContextProperties.CONTEXT_REGION, new Region(selection.x, selection.y)); + context.setProperty(stringcast(FormattingContextProperties.CONTEXT_DOCUMENT), Boolean.FALSE); + context.setProperty(stringcast(FormattingContextProperties.CONTEXT_REGION), new Region(selection.x, selection.y)); } extension.format(document, context); } else {
--- a/dwtx/jface/text/source/SourceViewerConfiguration.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/SourceViewerConfiguration.d Mon Sep 08 00:51:37 2008 +0200 @@ -134,7 +134,7 @@ * specification of this class' methods. */ public this() { - super(); +// super(); } /** @@ -303,11 +303,11 @@ for (int i= 0; i <= tabWidth; i++) { char[] spaceChars= new char[i]; Arrays.fill(spaceChars, ' '); - String spaces= new String(spaceChars); + String spaces= new_String(spaceChars); if (i < tabWidth) - indentPrefixes[i]= spaces + '\t'; + indentPrefixes[i]= spaces ~ '\t'; else - indentPrefixes[i]= new String(spaces); + indentPrefixes[i]= new_String(spaces); } indentPrefixes[tabWidth + 1]= ""; //$NON-NLS-1$ return indentPrefixes;
--- a/dwtx/jface/text/source/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html><head> - <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> - <meta content="IBM" name="Author"> - <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" name="GENERATOR"><title>annotation models</title></head> - -<body> -<p>Provides a support for managing annotations attached to a document.</p> -<h3>Package Specification</h3> -<p><tt>IAnnotationModels</tt> manage <tt>Annotations</tt>. - When an annotation model is connected to an <tt>IDocument</tt>, - any change to the document is reflected in the position of the managed annotations. - Implementers of <tt>IAnnotationModelListener</tt> - registered with an <tt>IAnnotationModel</tt> - object get informed about changes of the model in respect to annotations.</p> -</body></html> \ No newline at end of file
--- a/dwtx/jface/text/source/projection/ProjectionAnnotation.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/projection/ProjectionAnnotation.d Mon Sep 08 00:51:37 2008 +0200 @@ -157,10 +157,9 @@ private void initializeImages(Display display) { if (fgCollapsedImage is null) { - - ImageDescriptor descriptor= ImageDescriptor.createFromFile( getImportData!("images/collapsed.gif")); //$NON-NLS-1$ + ImageDescriptor descriptor= ImageDescriptor.createFromFile( getImportData!("dwtx.jface.text.source.projection.collapsed.gif")); //$NON-NLS-1$ fgCollapsedImage= descriptor.createImage(display); - descriptor= ImageDescriptor.createFromFile( getImportData!( "images/expanded.gif")); //$NON-NLS-1$ + descriptor= ImageDescriptor.createFromFile( getImportData!( "dwtx.jface.text.source.projection.expanded.gif")); //$NON-NLS-1$ fgExpandedImage= descriptor.createImage(display); display.disposeExec(new DisplayDisposeRunnable());
--- a/dwtx/jface/text/source/projection/ProjectionAnnotationHover.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/projection/ProjectionAnnotationHover.d Mon Sep 08 00:51:37 2008 +0200 @@ -52,8 +52,8 @@ * @since 3.0 */ class ProjectionAnnotationHover : IAnnotationHover, IAnnotationHoverExtension, IInformationProviderExtension2 { - - + + private IInformationControlCreator fInformationControlCreator; private IInformationControlCreator fInformationPresenterControlCreator; @@ -65,7 +65,7 @@ public void setHoverControlCreator(IInformationControlCreator creator) { fInformationControlCreator= creator; } - + /** * Sets the information presenter control creator for this projection annotation hover. * @@ -156,7 +156,7 @@ * @see dwtx.jface.text.source.IAnnotationHoverExtension#getHoverInfo(dwtx.jface.text.source.ISourceViewer, dwtx.jface.text.source.ILineRange, int) */ public Object getHoverInfo(ISourceViewer sourceViewer, ILineRange lineRange, int visibleLines) { - return getProjectionTextAtLine(sourceViewer, lineRange.getStartLine(), visibleLines); + return stringcast(getProjectionTextAtLine(sourceViewer, lineRange.getStartLine(), visibleLines)); } /*
--- a/dwtx/jface/text/source/projection/ProjectionAnnotationModel.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/projection/ProjectionAnnotationModel.d Mon Sep 08 00:51:37 2008 +0200 @@ -118,7 +118,7 @@ /** * Collapses all annotations that overlap with the given range and are collapsed. - * + * * @param offset the range offset * @param length the range length * @return <code>true</code> if any annotation has been collapse, <code>false</code> @@ -147,7 +147,7 @@ return collapsing; } - + /** * Expands all annotations that overlap with the given range and are collapsed. Fires a model change event if * requested. @@ -158,7 +158,7 @@ * should be fired, <code>false</code> otherwise * @return <code>true</code> if any annotation has been expanded, <code>false</code> otherwise */ - protected bool expandAll(int offset, int length, bool fireModelChanged) { + protected bool expandAll(int offset, int length, bool fireModelChanged_) { bool expanding= false; @@ -175,7 +175,7 @@ } } - if (expanding && fireModelChanged) + if (expanding && fireModelChanged_) fireModelChanged(); return expanding;
--- a/dwtx/jface/text/source/projection/ProjectionRulerColumn.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/projection/ProjectionRulerColumn.d Mon Sep 08 00:51:37 2008 +0200 @@ -202,20 +202,20 @@ // install mouse move listener control.addMouseMoveListener(new class() MouseMoveListener { public void mouseMove(MouseEvent e) { - bool redraw= false; + bool redraw_= false; ProjectionAnnotation annotation= findAnnotation(toDocumentLineNumber(e.y), false); if (annotation !is fCurrentAnnotation) { if (fCurrentAnnotation !is null) { fCurrentAnnotation.setRangeIndication(false); - redraw= true; + redraw_= true; } fCurrentAnnotation= annotation; if (fCurrentAnnotation !is null && !fCurrentAnnotation.isCollapsed()) { fCurrentAnnotation.setRangeIndication(true); - redraw= true; + redraw_= true; } } - if (redraw) + if (redraw_) redraw(); } });
--- a/dwtx/jface/text/source/projection/ProjectionSummary.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/projection/ProjectionSummary.d Mon Sep 08 00:51:37 2008 +0200 @@ -104,7 +104,7 @@ private IAnnotationAccess fAnnotationAccess; private List fConfiguredAnnotationTypes; - private Object fLock= new Object(); + private Object fLock; private IProgressMonitor fProgressMonitor; private /+volatile+/ Summarizer fSummarizer; @@ -115,7 +115,9 @@ * @param annotationAccess the annotation access */ public this(ProjectionViewer projectionViewer, IAnnotationAccess annotationAccess) { - super(); +// super(); + fLock= new Object(); + fProjectionViewer= projectionViewer; fAnnotationAccess= annotationAccess; } @@ -290,7 +292,7 @@ size= fConfiguredAnnotationTypes.size(); map= new HashMap(); for (int i= 0; i < size; i++) { - String type= cast(String) fConfiguredAnnotationTypes.get(i); + String type= stringcast( fConfiguredAnnotationTypes.get(i)); map.put(type, new AnnotationBag(type)); } } @@ -324,7 +326,7 @@ AnnotationBag bag= cast(AnnotationBag) bagMap.get(annotationType); if (bag is null && cast(IAnnotationAccessExtension)fAnnotationAccess ) { IAnnotationAccessExtension extension= cast(IAnnotationAccessExtension) fAnnotationAccess; - Object[] superTypes= extension.getSupertypes(annotationType); + Object[] superTypes= extension.getSupertypes(stringcast(annotationType)); for (int i= 0; i < superTypes.length && bag is null; i++) { bag= cast(AnnotationBag) bagMap.get(superTypes[i]); }
--- a/dwtx/jface/text/source/projection/ProjectionSupport.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/projection/ProjectionSupport.d Mon Sep 08 00:51:37 2008 +0200 @@ -61,7 +61,17 @@ * Key of the projection annotation model inside the visual annotation * model. Also internally used as key for the projection drawing strategy. */ - public const static Object PROJECTION= new Object(); + private static Object PROJECTION_; + public static Object PROJECTION(){ + if( PROJECTION_ is null ){ + synchronized(ProjectionSupport.classinfo){ + if( PROJECTION_ is null ){ + PROJECTION_ = new Object(); + } + } + } + return PROJECTION_; + } private static class ProjectionAnnotationsPainter : AnnotationPainter { @@ -112,7 +122,7 @@ int line= content.getLineAtOffset(offset); int lineStart= content.getOffsetAtLine(line); String text= content.getLine(line); - int lineLength= text is null ? 0 : text.length(); + int lineLength= text is null ? 0 : text.length; int lineEnd= lineStart + lineLength; Point p= textWidget.getLocationAtOffset(lineEnd); @@ -313,14 +323,14 @@ if (fPainter is null) { fPainter= new ProjectionAnnotationsPainter(fViewer, fAnnotationAccess); fPainter.addDrawingStrategy(PROJECTION, getDrawingStrategy()); - fPainter.addAnnotationType(ProjectionAnnotation.TYPE, PROJECTION); - fPainter.setAnnotationTypeColor(ProjectionAnnotation.TYPE, fSharedTextColors.getColor(getColor())); + fPainter.addAnnotationType(stringcast(ProjectionAnnotation.TYPE), PROJECTION); + fPainter.setAnnotationTypeColor(stringcast(ProjectionAnnotation.TYPE), fSharedTextColors.getColor(getColor())); fViewer.addPainter(fPainter); } if (fColumn is null) { fColumn= new ProjectionRulerColumn(9, fAnnotationAccess); - fColumn.addAnnotationType(ProjectionAnnotation.TYPE); + fColumn.addAnnotationType(stringcast(ProjectionAnnotation.TYPE)); fColumn.setHover(createProjectionAnnotationHover()); fViewer.addVerticalRulerColumn(fColumn); } @@ -350,7 +360,7 @@ if (fSummarizableTypes !is null) { int size= fSummarizableTypes.size(); for (int i= 0; i < size; i++) - summary.addAnnotationType(cast(String) fSummarizableTypes.get(i)); + summary.addAnnotationType(stringcast(fSummarizableTypes.get(i))); } return summary; }
--- a/dwtx/jface/text/source/projection/ProjectionViewer.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/projection/ProjectionViewer.d Mon Sep 08 00:51:37 2008 +0200 @@ -25,8 +25,8 @@ import dwt.dwthelper.utils; - import dwtx.dwtxhelper.Collection; +import tango.core.Exception; @@ -87,6 +87,34 @@ */ public class ProjectionViewer : SourceViewer , ITextViewerExtension5 { + public override IRegion getModelCoverage() { + return super.getModelCoverage(); + } + public override int modelLine2WidgetLine(int modelLine) { + return super.modelLine2WidgetLine(modelLine); + } + public override int modelOffset2WidgetOffset(int modelOffset) { + return super.modelOffset2WidgetOffset(modelOffset); + } + public override IRegion modelRange2WidgetRange(IRegion modelRange) { + return super.modelRange2WidgetRange(modelRange); + } + protected override IRegion modelRange2WidgetRange(Position modelPosition) { + return super.modelRange2WidgetRange(modelPosition); + } + public override int widgetOffset2ModelOffset(int widgetOffset) { + return super.widgetOffset2ModelOffset(widgetOffset); + } + public override IRegion widgetRange2ModelRange(IRegion widgetRange) { + return super.widgetRange2ModelRange(widgetRange); + } + public int widgetLine2ModelLine(int widgetLine) { + return super.widgetLine2ModelLine(widgetLine); + } + public int widgetLineOfWidgetOffset(int widgetOffset) { + return super.widgetLineOfWidgetOffset(widgetOffset); + } + private static const int BASE= INFORMATION; // see ISourceViewer.INFORMATION /** Operation constant for the expand operation. */ @@ -186,9 +214,9 @@ */ private static class ProjectionCommand { - final static int ADD= 0; - final static int REMOVE= 1; - final static int INVALIDATE_PRESENTATION= 2; + const static int ADD= 0; + const static int REMOVE= 1; + const static int INVALIDATE_PRESENTATION= 2; ProjectionDocument fProjection; int fType; @@ -240,9 +268,12 @@ final static int REDRAW_COSTS= 15; final static int INVALIDATION_COSTS= 10; - List fList= new ArrayList(15); + List fList; int fExpectedExecutionCosts= -1; + this(){ + fList= new ArrayList(15); + } void add(ProjectionCommand command) { fList.add(command); @@ -460,13 +491,13 @@ */ public void addProjectionListener(IProjectionListener listener) { - Assert.isNotNull(listener); + Assert.isNotNull(cast(Object)listener); if (fProjectionListeners is null) fProjectionListeners= new ArrayList(); - if (!fProjectionListeners.contains(listener)) - fProjectionListeners.add(listener); + if (!fProjectionListeners.contains(cast(Object)listener)) + fProjectionListeners.add(cast(Object)listener); } /** @@ -478,10 +509,10 @@ */ public void removeProjectionListener(IProjectionListener listener) { - Assert.isNotNull(listener); + Assert.isNotNull(cast(Object)listener); if (fProjectionListeners !is null) { - fProjectionListeners.remove(listener); + fProjectionListeners.remove(cast(Object)listener); if (fProjectionListeners.size() is 0) fProjectionListeners= null; } @@ -888,7 +919,7 @@ try { catchupWithProjectionAnnotationModel(event); } catch (BadLocationException x) { - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); } } else @@ -927,7 +958,7 @@ try { catchupWithProjectionAnnotationModel(null); } catch (BadLocationException x1) { - throw new IllegalArgumentException(); + throw new IllegalArgumentException(null); } finally { synchronized (fLock) { fPendingRequests.clear(); @@ -1548,7 +1579,7 @@ IDocument document= getDocument(); int length= document is null ? 0 : document.getLength(); IRegion visible= getModelCoverage(); - bool isSegmented= visible !is null && !visible.equals(new Region(0, length)); + bool isSegmented= visible !is null && !(cast(Object)visible).opEquals(new Region(0, length)); return isSegmented; }
--- a/dwtx/jface/text/source/projection/SourceViewerInformationControl.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/source/projection/SourceViewerInformationControl.d Mon Sep 08 00:51:37 2008 +0200 @@ -95,7 +95,7 @@ * styles are applied to the created shell. The given styles are applied to the created styled * text widget. The text widget will be initialized with the given font. The status field will * contain the given text or be hidden. - * + * * @param parent the parent shell * @param isResizable <code>true</code> if resizable * @param symbolicFontName the symbolic font name @@ -189,8 +189,8 @@ * @param input the input object */ public void setInput(Object input) { - if ( cast(String)input ) - setInformation(cast(String)input); + if ( cast(ArrayWrapperString)input ) + setInformation(stringcast(input)); else setInformation(null); } @@ -205,7 +205,7 @@ } IDocument doc= new Document(content); - fViewer.setInput(doc); + fViewer.setInput(cast(Object)doc); } /* @@ -353,7 +353,7 @@ public bool hasContents() { return fText.getCharCount() > 0; } - + /* * @see dwtx.jface.text.IInformationControlExtension3#computeTrim() * @since 3.4 @@ -366,7 +366,7 @@ /** * Adds the internal trimmings to the given trim of the shell. - * + * * @param trim the shell's trim, will be updated * @since 3.4 */ @@ -435,7 +435,7 @@ public bool isVisible() { return fShell !is null && !fShell.isDisposed() && fShell.isVisible(); } - + /* * @see dwtx.jface.text.IInformationControlExtension5#computeSizeConstraints(int, int) */
--- a/dwtx/jface/text/source/projection/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html><head> - <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> - <meta content="IBM" name="Author"> - <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" name="GENERATOR"><title>projections</title></head> - -<body> -<p>This package provides the UI part for projection documents of which the most important part is the projection viewer. A projection viewer -is a text viewer that allows to expand and collapse folded regions defined by a projection document. This package also introduces a projection -annotation model, projection annotations. The projection viewer offers support to show a summary for a folded region. -</p> -<h3>Package Specification</h3> -<p><tt>ProjectionViewer</tt> is a specialized <tt>SourceViewer</tt> that can display line-based folding based on a <tt>ProjectionDocument</tt>. To -do this it uses supporting classes like <tt>IProjectionListener</tt>, <tt>IProjectionPosition</tt>, <tt>ProjectionAnnotation</tt> and others. -</p> -</body></html> \ No newline at end of file
--- a/dwtx/jface/text/templates/ContextTypeRegistry.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/ContextTypeRegistry.d Mon Sep 08 00:51:37 2008 +0200 @@ -51,8 +51,11 @@ public class ContextTypeRegistry { /** all known context types */ - private const Map fContextTypes= new LinkedHashMap(); + private const Map fContextTypes; + this(){ + fContextTypes= new LinkedHashMap(); + } /** * Adds a context type to the registry. If there already is a context type * with the same ID registered, it is replaced.
--- a/dwtx/jface/text/templates/DocumentTemplateContext.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/DocumentTemplateContext.d Mon Sep 08 00:51:37 2008 +0200 @@ -99,7 +99,7 @@ public this(TemplateContextType type, IDocument document, Position position) { super(type); - Assert.isNotNull(document); + Assert.isNotNull(cast(Object)document); Assert.isNotNull(position); Assert.isTrue(position.getOffset() <= document.getLength());
--- a/dwtx/jface/text/templates/GlobalTemplateVariables.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/GlobalTemplateVariables.d Mon Sep 08 00:51:37 2008 +0200 @@ -35,8 +35,8 @@ import dwt.dwthelper.utils; -import com.ibm.icu.text.DateFormat; -import com.ibm.icu.util.Calendar; +// import com.ibm.icu.text.DateFormat; +// import com.ibm.icu.util.Calendar; /** * Global variables which are available in any context. @@ -138,7 +138,9 @@ super("date", TextTemplateMessages.getString("GlobalVariables.variable.description.date")); //$NON-NLS-1$ //$NON-NLS-2$ } protected String resolve(TemplateContext context) { - return DateFormat.getDateInstance().format(new java.util.Date()); + implMissing(__FILE__,__LINE__); + return null; + //return DateFormat.getDateInstance().format(new java.util.Date()); } } @@ -153,7 +155,9 @@ super("year", TextTemplateMessages.getString("GlobalVariables.variable.description.year")); //$NON-NLS-1$ //$NON-NLS-2$ } protected String resolve(TemplateContext context) { - return Integer.toString(Calendar.getInstance().get(Calendar.YEAR)); + implMissing(__FILE__,__LINE__); + return null; + //return Integer.toString(Calendar.getInstance().get(Calendar.YEAR)); } } @@ -172,7 +176,9 @@ * {@inheritDoc} */ protected String resolve(TemplateContext context) { - return DateFormat.getTimeInstance().format(new java.util.Date()); + implMissing(__FILE__,__LINE__); + return null; + //return DateFormat.getTimeInstance().format(new java.util.Date()); } }
--- a/dwtx/jface/text/templates/JFaceTextTemplateMessages.properties Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -############################################################################### -# 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 -############################################################################### - -# template proposal -TemplateProposal.displayString= {0} - {1} -TemplateProposal.errorDialog.title=Template Evaluation Error
--- a/dwtx/jface/text/templates/Template.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/Template.d Mon Sep 08 00:51:37 2008 +0200 @@ -47,6 +47,9 @@ */ public class Template { + private alias .toHash toHash; + private alias .equals equals; + /** The name of this template */ private /*final*/ String fName; /** A description of this template */ @@ -56,7 +59,7 @@ /** The template pattern. */ private /*final*/ String fPattern; /** - * The auto insertable property. + * The auto insertable property. * @since 3.1 */ private const bool fIsAutoInsertable; @@ -228,7 +231,7 @@ /** * Returns the auto insertable property of the template. - * + * * @return the auto insertable property of the template * @since 3.1 */
--- a/dwtx/jface/text/templates/TemplateBuffer.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/TemplateBuffer.d Mon Sep 08 00:51:37 2008 +0200 @@ -69,7 +69,7 @@ */ public final void setContent(String string, TemplateVariable[] variables) { Assert.isNotNull(string); - Assert.isNotNull(variables); +// Assert.isNotNull(variables); // XXX assert non-overlapping variable properties
--- a/dwtx/jface/text/templates/TemplateCompletionProcessor.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/TemplateCompletionProcessor.d Mon Sep 08 00:51:37 2008 +0200 @@ -67,7 +67,17 @@ } } - private static const Comparator fgProposalComparator= new ProposalComparator(); + private static Comparator fgProposalComparator_; + private static Comparator fgProposalComparator(){ + if(fgProposalComparator_ is null ) { + synchronized( TemplateCompletionProcessor.classinfo ){ + if(fgProposalComparator_ is null ) { + fgProposalComparator_ = new ProposalComparator(); + } + } + } + return fgProposalComparator_; + } /* * @see dwtx.jface.text.contentassist.IContentAssistProcessor#computeCompletionProposals(dwtx.jface.text.ITextViewer, @@ -100,12 +110,12 @@ continue; } if (template_.matches(prefix, context.getContextType().getId())) - matches.add(createProposal(template_, context, cast(IRegion) region, getRelevance(template_, prefix))); + matches.add( cast(Object) createProposal(template_, context, cast(IRegion) region, getRelevance(template_, prefix))); } Collections.sort(matches, fgProposalComparator); - return (ICompletionProposal[]) matches.toArray(new ICompletionProposal[matches.size()]); + return arraycast!(ICompletionProposal)( matches.toArray()); } /**
--- a/dwtx/jface/text/templates/TemplateContext.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/TemplateContext.d Mon Sep 08 00:51:37 2008 +0200 @@ -53,7 +53,7 @@ /** The context type of this context */ private const TemplateContextType fContextType; /** Additional variables. */ - private const Map fVariables= new HashMap(); + private const Map fVariables; /** A flag to indicate that the context should not be modified. */ private bool fReadOnly; @@ -63,6 +63,7 @@ * @param contextType the context type of this context */ protected this(TemplateContextType contextType) { + fVariables= new HashMap(); fContextType= contextType; fReadOnly= true; } @@ -111,7 +112,7 @@ * @return returns the value of the variable, <code>null</code> if the variable was not defined */ public String getVariable(String name) { - return cast(String) fVariables.get(name); + return stringcast( fVariables.get(name)); } /**
--- a/dwtx/jface/text/templates/TemplateContextType.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/TemplateContextType.d Mon Sep 08 00:51:37 2008 +0200 @@ -70,7 +70,7 @@ private /* final */ String fId= null; /** Variable resolvers used by this content type. */ - private const Map fResolvers= new HashMap(); + private const Map fResolvers; /** The name of the context type. */ private String fName= null; @@ -92,6 +92,8 @@ * @param name the name of the context type */ public this(String id, String name) { + fResolvers= new HashMap(); + Assert.isNotNull(id); Assert.isNotNull(name); fId= id; @@ -100,7 +102,7 @@ /** * Returns the id of the context type. - * + * * @return the id of the receiver */ public String getId() { @@ -127,6 +129,7 @@ * </p> */ public this() { + fResolvers= new HashMap(); } /** @@ -271,8 +274,8 @@ IDocument document= new Document(buffer.getString()); MultiTextEdit edit= new MultiTextEdit(0, document.getLength()); - edit.addChildren((TextEdit[]) positions.toArray(new TextEdit[positions.size()])); - edit.addChildren((TextEdit[]) edits.toArray(new TextEdit[edits.size()])); + edit.addChildren(arraycast!(TextEdit)( positions.toArray())); + edit.addChildren(arraycast!(TextEdit)( edits.toArray())); edit.apply(document, TextEdit.UPDATE_REGIONS); positionsToVariables(positions, variables); @@ -282,7 +285,7 @@ /** * Resolves a single variable in a context. Resolving is delegated to the registered resolver. - * + * * @param variable the variable to resolve * @param context the context in which to resolve the variable * @since 3.3
--- a/dwtx/jface/text/templates/TemplateException.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/TemplateException.d Mon Sep 08 00:51:37 2008 +0200 @@ -62,7 +62,7 @@ * Creates a new template exception. */ public this() { - super(); + super(null); } /** @@ -80,7 +80,7 @@ * @param message the message describing the problem that arose * @param cause the original exception */ - public this(String message, Throwable cause) { + public this(String message, Exception cause) { super(message, cause); } @@ -89,7 +89,7 @@ * * @param cause the original exception */ - public this(Throwable cause) { - super(cause); + public this(Exception cause) { + super(null, cause); } }
--- a/dwtx/jface/text/templates/TemplateProposal.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/TemplateProposal.d Mon Sep 08 00:51:37 2008 +0200 @@ -106,7 +106,7 @@ public this(Template template_, TemplateContext context, IRegion region, Image image, int relevance) { Assert.isNotNull(template_); Assert.isNotNull(context); - Assert.isNotNull(region); + Assert.isNotNull(cast(Object)region); fTemplate= template_; fContext= context; @@ -256,19 +256,22 @@ } - private void ensurePositionCategoryInstalled(final IDocument document, LinkedModeModel model) { + private void ensurePositionCategoryInstalled(IDocument document, LinkedModeModel model) { if (!document.containsPositionCategory(getCategory())) { document.addPositionCategory(getCategory()); fUpdater= new InclusivePositionUpdater(getCategory()); document.addPositionUpdater(fUpdater); - model.addLinkingListener(new class() ILinkedModeListener { - + model.addLinkingListener(new class(document) ILinkedModeListener { + IDocument document_; + this( IDocument a ){ + document_=a; + } /* * @see dwtx.jface.text.link.ILinkedModeListener#left(dwtx.jface.text.link.LinkedModeModel, int) */ public void left(LinkedModeModel environment, int flags) { - ensurePositionCategoryRemoved(document); + ensurePositionCategoryRemoved(document_); } public void suspend(LinkedModeModel environment) {} @@ -289,7 +292,7 @@ } private String getCategory() { - return "TemplateProposalCategory_" + toString(); //$NON-NLS-1$ + return "TemplateProposalCategory_" ~ toString(); //$NON-NLS-1$ } private int getCaretOffset(TemplateBuffer buffer) { @@ -375,7 +378,7 @@ public String getDisplayString() { if (fDisplayString is null) { String[] arguments= [ fTemplate.getName(), fTemplate.getDescription() ]; - fDisplayString= JFaceTextTemplateMessages.getFormattedString("TemplateProposal.displayString", arguments); //$NON-NLS-1$ + fDisplayString= JFaceTextTemplateMessages.getFormattedString("TemplateProposal.displayString", stringcast(arguments)); //$NON-NLS-1$ } return fDisplayString; } @@ -395,7 +398,7 @@ } private void openErrorDialog(Shell shell, Exception e) { - MessageDialog.openError(shell, JFaceTextTemplateMessages.getString("TemplateProposal.errorDialog.title"), e.getMessage()); //$NON-NLS-1$ + MessageDialog.openError(shell, JFaceTextTemplateMessages.getString("TemplateProposal.errorDialog.title"), e.msg); //$NON-NLS-1$ } /** @@ -446,7 +449,7 @@ * @see dwtx.jface.text.contentassist.ICompletionProposalExtension3#getPrefixCompletionText(dwtx.jface.text.IDocument, int) */ public CharSequence getPrefixCompletionText(IDocument document, int completionOffset) { - return fTemplate.getName(); + return new StringCharSequence( fTemplate.getName() ); } /*
--- a/dwtx/jface/text/templates/TemplateTranslator.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/TemplateTranslator.d Mon Sep 08 00:51:37 2008 +0200 @@ -31,16 +31,9 @@ import dwtx.jface.text.templates.TemplateVariableType; // packageimport import dwtx.jface.text.templates.TemplateVariableResolver; // packageimport - import dwt.dwthelper.utils; - import dwtx.dwtxhelper.Collection; - - - - -import java.util.regex.Matcher; -import java.util.regex.Pattern; +import dwtx.dwtxhelper.regex; /** * The template translator translates a string into a template buffer. Regions marked as variables @@ -63,7 +56,7 @@ * <p> * Clients may only replace the <code>createVariable</code> method of this class. * </p> - * + * * @since 3.0 */ public class TemplateTranslator { @@ -83,35 +76,56 @@ * Regex pattern for argument * @since 3.4 */ - private static const String ARGUMENT= "(?:" + QUALIFIED_NAME + ")|(?:" + ARGUMENT_TEXT + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + private static const String ARGUMENT= "(?:" ~ QUALIFIED_NAME ~ ")|(?:" ~ ARGUMENT_TEXT ~ ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ /** * Precompiled regex pattern for qualified names. * @since 3.3 */ - private static const Pattern PARAM_PATTERN= Pattern.compile(ARGUMENT); + private static Pattern PARAM_PATTERN_; + private static Pattern PARAM_PATTERN(){ + if( PARAM_PATTERN_ is null ){ + synchronized( TemplateTranslator.classinfo ){ + if( PARAM_PATTERN_ is null ){ + PARAM_PATTERN_ = Pattern.compile(ARGUMENT); + } + } + } + return PARAM_PATTERN_; + } /** * Precompiled regex pattern for valid dollar escapes (dollar literals and variables) and * (invalid) single dollars. * @since 3.3 */ - private static final Pattern ESCAPE_PATTERN= Pattern.compile( - "\\$\\$|\\$\\{\\s*+" + // $$|${ //$NON-NLS-1$ - "(\\w*+)" + // variable id group (1) //$NON-NLS-1$ - "\\s*+(?::\\s*+" + // : //$NON-NLS-1$ - "(" + QUALIFIED_NAME + ")" + // variable type group (2) //$NON-NLS-1$ //$NON-NLS-2$ - "\\s*+(?:\\(\\s*+" + // ( //$NON-NLS-1$ - "((?:(?:" + ARGUMENT + ")\\s*+,\\s*+)*(?:" + ARGUMENT + "))" + // arguments group (3) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - "\\s*+\\))?\\s*+)?\\}|\\$"); // )}|$ //$NON-NLS-1$ + private static Pattern ESCAPE_PATTERN_; + private static Pattern ESCAPE_PATTERN(){ + if( ESCAPE_PATTERN_ is null ){ + synchronized( TemplateTranslator.classinfo ){ + if( ESCAPE_PATTERN_ is null ){ + ESCAPE_PATTERN_ = Pattern.compile( + "\\$\\$|\\$\\{\\s*+" ~ // $$|${ //$NON-NLS-1$ + "(\\w*+)" ~ // variable id group (1) //$NON-NLS-1$ + "\\s*+(?::\\s*+" ~ // : //$NON-NLS-1$ + "(" ~ QUALIFIED_NAME ~ ")" ~ // variable type group (2) //$NON-NLS-1$ //$NON-NLS-2$ + "\\s*+(?:\\(\\s*+" ~ // ( //$NON-NLS-1$ + "((?:(?:" ~ ARGUMENT ~ ")\\s*+,\\s*+)*(?:" ~ ARGUMENT ~ "))" ~ // arguments group (3) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + "\\s*+\\))?\\s*+)?\\}|\\$"); // )}|$ //$NON-NLS-1$ + } + } + } + return ESCAPE_PATTERN_; + } /** * @since 3.3 */ private final class VariableDescription { - final List fOffsets= new ArrayList(5); - final String fName; + const List fOffsets; + const String fName; TemplateVariableType fType; this(String name, TemplateVariableType type) { + fOffsets= new ArrayList(5); fName= name; fType= type; } @@ -122,7 +136,7 @@ if (fType is null) fType= type; if (!type.equals(fType)) - fail(TextTemplateMessages.getFormattedString("TemplateTranslator.error.incompatible.type", fName)); //$NON-NLS-1$ + fail(TextTemplateMessages.getFormattedString("TemplateTranslator.error.incompatible.type", stringcast(fName))); //$NON-NLS-1$ } } @@ -138,7 +152,7 @@ /** * Returns an error message if an error occurred for the last translation, <code>null</code> * otherwise. - * + * * @return the error message if an error occurred during the most recent translation, * <code>null</code> otherwise */ @@ -149,7 +163,7 @@ /** * Translates a template to a <code>TemplateBuffer</code>. <code>null</code> is returned if * there was an error. <code>getErrorMessage()</code> retrieves the associated error message. - * + * * @param template the template to translate. * @return returns the template buffer corresponding to the string * @see #getErrorMessage() @@ -163,7 +177,7 @@ * Translates a template string to <code>TemplateBuffer</code>. <code>null</code> is * returned if there was an error. <code>getErrorMessage()</code> retrieves the associated * error message. - * + * * @param string the string to translate. * @return returns the template buffer corresponding to the string * @see #getErrorMessage() @@ -175,18 +189,18 @@ /** * Internal parser. - * + * * @param string the string to parse * @return the parsed <code>TemplateBuffer</code> * @throws TemplateException if the string does not conform to the template format */ private TemplateBuffer parse(String string) { - + fErrorMessage= null; final StringBuffer buffer= new StringBuffer(string.length()); final Matcher matcher= ESCAPE_PATTERN.matcher(string); final Map variables= new LinkedHashMap(); - + int complete= 0; while (matcher.find()) { // append any verbatim text @@ -204,9 +218,9 @@ String typeName= matcher.group(2); String params= matcher.group(3); TemplateVariableType type= createType(typeName, params); - + updateOrCreateVariable(variables, name, type, buffer.length()); - + buffer.append(name); } complete= matcher.end(); @@ -237,7 +251,7 @@ params.add(argument); } - return new TemplateVariableType(typeName, (String[]) params.toArray(new String[params.size()])); + return new TemplateVariableType(typeName, stringcast( params.toArray())); } private void fail(String message) { @@ -249,7 +263,7 @@ * If there is no variable named <code>name</code>, a new variable with the given type, name * and offset is created. If one exists, the offset is added to the variable and the type is * merged with the existing type. - * + * * @param variables the variables by variable name * @param name the name of the variable * @param type the variable type, <code>null</code> for not defined @@ -270,7 +284,7 @@ /** * Creates proper {@link TemplateVariable}s from the variable descriptions. - * + * * @param variables the variable descriptions by variable name * @return the corresponding variables * @since 3.3 @@ -298,14 +312,14 @@ fCurrentType= null; // avoid dangling reference return result; } - + /** * Hook method to create new variables. Subclasses may override to supply their custom variable * type. * <p> * Clients may replace this method. * </p> - * + * * @param type the type of the new variable. * @param name the name of the new variable. * @param offsets the offsets where the variable occurs in the template @@ -315,14 +329,14 @@ protected TemplateVariable createVariable(String type, String name, int[] offsets) { return createVariable(fCurrentType, name, offsets); } - + /** * Hook method to create new variables. Subclasses may override to supply their custom variable * type. * <p> * Clients may replace this method. * </p> - * + * * @param type the type of the new variable. * @param name the name of the new variable. * @param offsets the offsets where the variable occurs in the template
--- a/dwtx/jface/text/templates/TemplateVariableResolver.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/TemplateVariableResolver.d Mon Sep 08 00:51:37 2008 +0200 @@ -60,7 +60,7 @@ * @param type the name of the type * @param description the description for the type */ - protected this(String type, String description) { + /+protected+/ this(String type, String description) { setType(type); setDescription(description); }
--- a/dwtx/jface/text/templates/TemplateVariableType.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/TemplateVariableType.d Mon Sep 08 00:51:37 2008 +0200 @@ -45,7 +45,7 @@ /** * Value object that represents the type of a template variable. A type is defined by its name and * may have parameters. - * + * * @since 3.3 * @noinstantiate This class is not intended to be instantiated by clients. */ @@ -64,12 +64,12 @@ Assert.isLegal(name !is null); Assert.isLegal(params !is null); fName= name; - fParams= Collections.unmodifiableList(new ArrayList(Arrays.asList(params))); + fParams= Collections.unmodifiableList(new ArrayList(Arrays.asList(stringcast(params)))); } /** * Returns the type name of this variable type. - * + * * @return the type name of this variable type */ public String getName() { @@ -78,7 +78,7 @@ /** * Returns the unmodifiable and possibly empty list of parameters (element type: {@link String}) - * + * * @return the list of parameters */ public List getParams() { @@ -88,10 +88,10 @@ /* * @see java.lang.Object#equals(java.lang.Object) */ - public bool equals(Object obj) { + public override int opEquals(Object obj) { if ( cast(TemplateVariableType)obj ) { TemplateVariableType other= cast(TemplateVariableType) obj; - return other.fName.equals(fName) && other.fParams.equals(fParams); + return other.fName.equals(fName) && other.fParams.opEquals(cast(Object)fParams); } return false; } @@ -100,14 +100,14 @@ * @see java.lang.Object#hashCode() */ public override hash_t toHash() { + alias .toHash toHash; return fName.toHash() + fParams.toHash(); } - /* * @see java.lang.Object#toString() * @since 3.3 */ public override String toString() { - return fName + fParams.toString(); + return fName ~ (cast(Object)fParams).toString(); } }
--- a/dwtx/jface/text/templates/TextTemplateMessages.properties Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -############################################################################### -# Copyright (c) 2000, 2006 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 -############################################################################### - -# template translator -TemplateTranslator.error.incomplete.variable=Template has incomplete variables. Type '$$' if to enter the dollar character. -TemplateTranslator.error.invalid.identifier=Template has invalid variable identifiers. -TemplateTranslator.error.incompatible.type=Template variable ''{0}'' has incompatible types - -# global variables -GlobalVariables.variable.description.cursor=The cursor position after editing template variables -GlobalVariables.variable.description.dollar=The dollar symbol -GlobalVariables.variable.description.date=Current date -GlobalVariables.variable.description.year=Current year -GlobalVariables.variable.description.time=Current time -GlobalVariables.variable.description.user=User name -GlobalVariables.variable.description.selectedWord= The selected word -GlobalVariables.variable.description.selectedLines= The selected lines
--- a/dwtx/jface/text/templates/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta content="text/html; charset=iso-8859-1" - http-equiv="Content-Type"> - <meta content="IBM" name="Author"> - <title>Templates</title> - <meta content="Template Infrastructure package description" - name="description"> -</head> -<body> -Application programming interfaces for interaction -with the Eclipse text editor template support. -<h2>Templates</h2> -<h3>Packages</h3> -<ul> - <li><tt><big><strong>org.eclipse.jface.text.templates</strong></big></tt></li> - <li><tt><big><strong>org.eclipse.ui.workbench.texteditor.templates</strong></big></tt></li> - <li><tt><big><strong>org.eclipse.ui.editors.templates</strong></big></tt></li> -</ul> -<h3>Introduction</h3> -Templates are shortcuts for frequently used fragments of text such as -code patterns or complex text entities. They may contain variables -which are only resolved at the time when the template is inserted -within a context. Together with linked mode, inserting a template can -create a on-the-fly edit mask within a text viewer.<br> -<br> -Templates are specified as text, variables are defined using the <tt>${variable}</tt> -notation known from -Ant, for example. The following snippet shows an example template for -an instance check in Java:<br> -<pre>if (${name} instanceof ${type}) { - ${type} ${new_name} = (${type})${name}; - ${cursor} -} -</pre> -In this template, the variables (<tt>name,type, ...</tt>) are resolved -when inserted into java source and changing one variable instance will -also change the other. When leaving linked mode, the caret is placed at -the <tt>cursor</tt> variable.<br> -<br> -Template functionality can be added to a custom text editor by offering -<tt>TemplateProposal</tt>s as content assist choices, which is -simplified by using a subclass of <tt>TemplateCompletionProcessor</tt>. User template management can be -offered by including a <tt>TemplatePreferencePage</tt> which uses a <tt>TemplateStore</tt> and <tt>ContextTypeRegistry</tt> as the -underlying model to store templates. The <tt>org.eclipse.ui.editors.templates</tt> -extension point can be used to allow other plug-ins to contribute -templates to an editor. This is accomplished by using the <tt>ContributionTemplateStore</tt> and <tt>ContributionContextTypeRegistry</tt> -subclasses of the above types.<br> -<br> -Template variables are resolved by a <tt>TemplateVariableResolver.</tt> <tt>GlobalTemplateVariables</tt> offers -some default variables such as date, user, and selection, but advanced -features such as resolving to language constructs can be performed in -subclasses.<br> -<h4>Classes</h4> -<ul> - <li><tt>Template</tt> a template consists of name, context -type identifier, and a pattern.</li> - <li><tt>TemplateTranslator</tt> and <tt>TemplateBuffer</tt> are used to -parse the template grammar and don't need to be used usually.</li> - <li>A <tt>TemplateProposal </tt>can be -offered in content assist, possibly created by a subclass of <tt>TemplateCompletionProcessor.</tt></li> - <li><tt>TemplateStore</tt> and <tt>ContextTypeRegistry</tt> manage a -set of templates within a plug-in and offer ways to store them in the -preferences or externally in XML streams via a <tt>TemplateReaderWriter</tt>.<br></li> - <li><tt>ContributionTemplateStore</tt> and <tt>ContributionContextTypeRegistry</tt> -add awareness for the <tt>org.eclipse.ui.editors.templates</tt> -extension point.</li> - <li><tt>TemplatePreferencePage</tt> allows -the user to access the templates within a <tt>TemplateStore.</tt></li> -</ul> -<ul> -</ul> -<h4>Example</h4> -See the Template Editor Example in the <strong>org.eclipse.ui.examples.javaeditor</strong> project.<br> -</body> -</html>
--- a/dwtx/jface/text/templates/persistence/TemplateReaderWriter.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/persistence/TemplateReaderWriter.d Mon Sep 08 00:51:37 2008 +0200 @@ -18,18 +18,11 @@ import dwt.dwthelper.utils; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Reader; -import java.io.Writer; +import dwt.dwthelper.InputStream; import dwtx.dwtxhelper.Collection; - - import dwt.dwthelper.ResourceBundle; - +/+ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -48,6 +41,7 @@ import org.w3c.dom.Text; import org.xml.sax.InputSource; import org.xml.sax.SAXException; ++/ import dwtx.core.runtime.Assert; import dwtx.jface.text.templates.Template; @@ -209,7 +203,7 @@ break; } - return (TemplatePersistenceData[]) templates.toArray(new TemplatePersistenceData[templates.size()]); + return arraycast!(TemplatePersistenceData)( templates.toArray()); } catch (ParserConfigurationException e) { Assert.isTrue(false);
--- a/dwtx/jface/text/templates/persistence/TemplateStore.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/templates/persistence/TemplateStore.d Mon Sep 08 00:51:37 2008 +0200 @@ -16,17 +16,9 @@ import dwtx.jface.text.templates.persistence.TemplateReaderWriter; // packageimport import dwtx.jface.text.templates.persistence.TemplatePersistenceMessages; // packageimport - import dwt.dwthelper.utils; - -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; -import java.io.StringWriter; import dwtx.dwtxhelper.Collection; - - import dwtx.core.runtime.Assert; import dwtx.jface.preference.IPersistentPreferenceStore; import dwtx.jface.preference.IPreferenceStore; @@ -215,7 +207,7 @@ StringWriter output= new StringWriter(); TemplateReaderWriter writer= new TemplateReaderWriter(); - writer.save((TemplatePersistenceData[]) custom.toArray(new TemplatePersistenceData[custom.size()]), output); + writer.save(arraycast!(TemplatePersistenceData)( custom.toArray()), output); fIgnorePreferenceStoreChanges= true; try { @@ -322,7 +314,7 @@ templates.add(data.getTemplate()); } - return (Template[]) templates.toArray(new Template[templates.size()]); + return arraycast!(Template)( templates.toArray()); } /** @@ -386,7 +378,7 @@ datas.add(data); } - return (TemplatePersistenceData[]) datas.toArray(new TemplatePersistenceData[datas.size()]); + return arraycast!(TemplatePersistenceData)( datas.toArray()); } /**
--- a/dwtx/jface/text/templates/persistence/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta content="text/html; charset=iso-8859-1" - http-equiv="Content-Type"> - <meta content="IBM" name="Author"> - <title>Templates</title> - <meta content="Template Infrastructure package description" - name="description"> -</head> -<body> -Provides persistence support for templates. -<h3>Packages</h3> -<ul> - <li><tt><big><strong>org.eclipse.jface.text.templates</strong></big></tt></li> - <li><tt><big><strong>org.eclipse.ui.workbench.texteditor.templates</strong></big></tt></li> - <li><tt><big><strong>org.eclipse.ui.editors.templates</strong></big></tt></li> -</ul> -<h3>Introduction</h3> -Templates are shortcuts for frequently used fragments of text such as -code patterns or complex text entities. They may contain variables -which are only resolved at the time when the template is inserted -within a context. Together with linked mode, inserting a template can -create a on-the-fly edit mask within a text viewer.<br> -<br> -Templates are specified as text, variables are defined using the <tt>${variable}</tt> -notation known from -Ant, for example. The following snippet shows an example template for -an instance check in Java:<br> -<pre>if (${name} instanceof ${type}) { - ${type} ${new_name} = (${type})${name}; - ${cursor} -} -</pre> -In this template, the variables (<tt>name,type, ...</tt>) are resolved -when inserted into java source and changing one variable instance will -also change the other. When leaving linked mode, the caret is placed at -the <tt>cursor</tt> variable.<br> -<br> -Template functionality can be added to a custom text editor by offering -<tt>TemplateProposal</tt>s as content assist choices, which is -simplified by using a subclass of <tt>TemplateCompletionProcessor</tt>. User template management can be -offered by including a <tt>TemplatePreferencePage</tt> which uses a <tt>TemplateStore</tt> and <tt>ContextTypeRegistry</tt> as the -underlying model to store templates. The <tt>org.eclipse.ui.editors.templates</tt> -extension point can be used to allow other plug-ins to contribute -templates to an editor. This is accomplished by using the <tt>ContributionTemplateStore</tt> and <tt>ContributionContextTypeRegistry</tt> -subclasses of the above types.<br> -<br> -Template variables are resolved by a <tt>TemplateVariableResolver.</tt> <tt>GlobalTemplateVariables</tt> offers -some default variables such as date, user, and selection, but advanced -features such as resolving to language constructs can be performed in -subclasses.<br> -<h4>Classes</h4> -<ul> - <li><tt>Template</tt> a template consists of name, context -type identifier, and a pattern.</li> - <li><tt>TemplateTranslator</tt> and <tt>TemplateBuffer</tt> are used to -parse the template grammar and don't need to be used usually.</li> - <li>A <tt>TemplateProposal </tt>can be -offered in content assist, possibly created by a subclass of <tt>TemplateCompletionProcessor.</tt></li> - <li><tt>TemplateStore</tt> and <tt>ContextTypeRegistry</tt> manage a -set of templates within a plug-in and offer ways to store them in the -preferences or externally in XML streams via a <tt>TemplateReaderWriter</tt>.<br></li> - <li><tt>ContributionTemplateStore</tt> and <tt>ContributionContextTypeRegistry</tt> -add awareness for the <tt>org.eclipse.ui.editors.templates</tt> -extension point.</li> - <li><tt>TemplatePreferencePage</tt> allows -the user to access the templates within a <tt>TemplateStore.</tt></li> -</ul> -<ul> -</ul> -<h4>Example</h4> -See the Template Editor Example in the <strong>org.eclipse.ui.examples.javaeditor</strong> project.<br> -</body> -</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwtx/org/osgi/framework/Bundle.d Mon Sep 08 00:51:37 2008 +0200 @@ -0,0 +1,1122 @@ +/* + * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/Bundle.java,v 1.54 2007/02/21 16:49:05 hargrave Exp $ + * + * Copyright (c) OSGi Alliance (2000, 2007). All Rights Reserved. + * + * 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. + */ + +module dwtx.org.osgi.framework.Bundle; + +import dwt.dwthelper.utils; + +// import java.io.IOException; +// import java.io.InputStream; +// import java.net.URL; +// import java.util.Dictionary; +// import java.util.Enumeration; + +/** + * An installed bundle in the Framework. + * + * <p> + * A <code>Bundle</code> object is the access point to define the lifecycle of + * an installed bundle. Each bundle installed in the OSGi environment must have + * an associated <code>Bundle</code> object. + * + * <p> + * A bundle must have a unique identity, a <code>long</code>, chosen by the + * Framework. This identity must not change during the lifecycle of a bundle, + * even when the bundle is updated. Uninstalling and then reinstalling the + * bundle must create a new unique identity. + * + * <p> + * A bundle can be in one of six states: + * <ul> + * <li>{@link #UNINSTALLED} + * <li>{@link #INSTALLED} + * <li>{@link #RESOLVED} + * <li>{@link #STARTING} + * <li>{@link #STOPPING} + * <li>{@link #ACTIVE} + * </ul> + * <p> + * Values assigned to these states have no specified ordering; they represent + * bit values that may be ORed together to determine if a bundle is in one of + * the valid states. + * + * <p> + * A bundle should only execute code when its state is one of + * <code>STARTING</code>,<code>ACTIVE</code>, or <code>STOPPING</code>. + * An <code>UNINSTALLED</code> bundle can not be set to another state; it is a + * zombie and can only be reached because references are kept somewhere. + * + * <p> + * The Framework is the only entity that is allowed to create + * <code>Bundle</code> objects, and these objects are only valid within the + * Framework that created them. + * + * @ThreadSafe + * @version $Revision: 1.54 $ + */ +public interface Bundle { + /** + * The bundle is uninstalled and may not be used. + * + * <p> + * The <code>UNINSTALLED</code> state is only visible after a bundle is + * uninstalled; the bundle is in an unusable state but references to the + * <code>Bundle</code> object may still be available and used for + * introspection. + * <p> + * The value of <code>UNINSTALLED</code> is 0x00000001. + */ + public static const int UNINSTALLED = 0x00000001; + + /** + * The bundle is installed but not yet resolved. + * + * <p> + * A bundle is in the <code>INSTALLED</code> state when it has been + * installed in the Framework but is not or cannot be resolved. + * <p> + * This state is visible if the bundle's code dependencies are not resolved. + * The Framework may attempt to resolve an <code>INSTALLED</code> bundle's + * code dependencies and move the bundle to the <code>RESOLVED</code> + * state. + * <p> + * The value of <code>INSTALLED</code> is 0x00000002. + */ + public static const int INSTALLED = 0x00000002; + + /** + * The bundle is resolved and is able to be started. + * + * <p> + * A bundle is in the <code>RESOLVED</code> state when the Framework has + * successfully resolved the bundle's code dependencies. These dependencies + * include: + * <ul> + * <li>The bundle's class path from its {@link Constants#BUNDLE_CLASSPATH} + * Manifest header. + * <li>The bundle's package dependencies from its + * {@link Constants#EXPORT_PACKAGE} and {@link Constants#IMPORT_PACKAGE} + * Manifest headers. + * <li>The bundle's required bundle dependencies from its + * {@link Constants#REQUIRE_BUNDLE} Manifest header. + * <li>A fragment bundle's host dependency from its + * {@link Constants#FRAGMENT_HOST} Manifest header. + * </ul> + * <p> + * Note that the bundle is not active yet. A bundle must be put in the + * <code>RESOLVED</code> state before it can be started. The Framework may + * attempt to resolve a bundle at any time. + * <p> + * The value of <code>RESOLVED</code> is 0x00000004. + */ + public static const int RESOLVED = 0x00000004; + + /** + * The bundle is in the process of starting. + * + * <p> + * A bundle is in the <code>STARTING</code> state when its + * {@link #start(int) start} method is active. A bundle must be in this + * state when the bundle's {@link BundleActivator#start} is called. If the + * <code>BundleActivator.start</code> method completes without exception, + * then the bundle has successfully started and must move to the + * <code>ACTIVE</code> state. + * <p> + * If the bundle has a + * {@link Constants#ACTIVATION_LAZY lazy activation policy}, then the + * bundle may remain in this state for some time until the activation is + * triggered. + * <p> + * The value of <code>STARTING</code> is 0x00000008. + */ + public static const int STARTING = 0x00000008; + + /** + * The bundle is in the process of stopping. + * + * <p> + * A bundle is in the <code>STOPPING</code> state when its + * {@link #stop(int) stop} method is active. A bundle must be in this state + * when the bundle's {@link BundleActivator#stop} method is called. When the + * <code>BundleActivator.stop</code> method completes the bundle is + * stopped and must move to the <code>RESOLVED</code> state. + * <p> + * The value of <code>STOPPING</code> is 0x00000010. + */ + public static const int STOPPING = 0x00000010; + + /** + * The bundle is now running. + * + * <p> + * A bundle is in the <code>ACTIVE</code> state when it has been + * successfully started and activated. + * <p> + * The value of <code>ACTIVE</code> is 0x00000020. + */ + public static const int ACTIVE = 0x00000020; + + /** + * The bundle start operation is transient and the persistent autostart + * setting of the bundle is not modified. + * + * <p> + * This bit may be set when calling {@link #start(int)} to notify the + * framework that the autostart setting of the bundle must not be modified. + * If this bit is not set, then the autostart setting of the bundle is + * modified. + * + * @since 1.4 + * @see #start(int) + */ + public static const int START_TRANSIENT = 0x00000001; + + /** + * The bundle start operation must activate the bundle according to the + * bundle's declared + * {@link Constants#BUNDLE_ACTIVATIONPOLICY activation policy}. + * + * <p> + * This bit may be set when calling {@link #start(int)} to notify the + * framework that the bundle must be activated using the bundle's declared + * activation policy. + * + * @since 1.4 + * @see Constants#BUNDLE_ACTIVATIONPOLICY + * @see #start(int) + */ + public static const int START_ACTIVATION_POLICY = 0x00000002; + + /** + * The bundle stop is transient and the persistent autostart setting of the + * bundle is not modified. + * + * <p> + * This bit may be set when calling {@link #stop(int)} to notify the + * framework that the autostart setting of the bundle must not be modified. + * If this bit is not set, then the autostart setting of the bundle is + * modified. + * + * @since 1.4 + * @see #stop(int) + */ + public static final int STOP_TRANSIENT = 0x00000001; + + /** + * Returns this bundle's current state. + * + * <p> + * A bundle can be in only one state at any time. + * + * @return An element of <code>UNINSTALLED</code>,<code>INSTALLED</code>, + * <code>RESOLVED</code>,<code>STARTING</code>, + * <code>STOPPING</code>,<code>ACTIVE</code>. + */ + public int getState(); + + /** + * Starts this bundle. + * + * <p> + * If this bundle's state is <code>UNINSTALLED</code> then an + * <code>IllegalStateException</code> is thrown. + * <p> + * If the Framework implements the optional Start Level service and the + * current start level is less than this bundle's start level: + * <ul> + * <li>If the {@link #START_TRANSIENT} option is set, then a + * <code>BundleException</code> is thrown indicating this bundle cannot be + * started due to the Framework's current start level. + * + * <li>Otherwise, the Framework must set this bundle's persistent autostart + * setting to <em>Started with declared activation</em> if the + * {@link #START_ACTIVATION_POLICY} option is set or + * <em>Started with eager activation</em> if not set. + * </ul> + * <p> + * When the Framework's current start level becomes equal to or more than + * this bundle's start level, this bundle will be started. + * <p> + * Otherwise, the following steps are required to start this bundle: + * <ol> + * <li>If this bundle is in the process of being activated or deactivated + * then this method must wait for activation or deactivation to complete + * before continuing. If this does not occur in a reasonable time, a + * <code>BundleException</code> is thrown to indicate this bundle was + * unable to be started. + * + * <li>If this bundle's state is <code>ACTIVE</code> then this method + * returns immediately. + * + * <li>If the {@link #START_TRANSIENT} option is not set then set this + * bundle's autostart setting to <em>Started with declared activation</em> + * if the {@link #START_ACTIVATION_POLICY} option is set or + * <em>Started with eager activation</em> if not set. When the Framework + * is restarted and this bundle's autostart setting is not <em>Stopped</em>, + * this bundle must be automatically started. + * + * <li>If this bundle's state is not <code>RESOLVED</code>, an attempt + * is made to resolve this bundle. If the Framework cannot resolve this + * bundle, a <code>BundleException</code> is thrown. + * + * <li>If the {@link #START_ACTIVATION_POLICY} option is set and this + * bundle's declared activation policy is + * {@link Constants#ACTIVATION_LAZY lazy} then: + * <ul> + * <li>If this bundle's state is <code>STARTING</code> then this method + * returns immediately. + * <li>This bundle's state is set to <code>STARTING</code>. + * <li>A bundle event of type {@link BundleEvent#LAZY_ACTIVATION} is fired. + * <li>This method returns immediately and the remaining steps will be + * followed when this bundle's activation is later triggered. + * </ul> + * <i></i> + * <li>This bundle's state is set to <code>STARTING</code>. + * + * <li>A bundle event of type {@link BundleEvent#STARTING} is fired. + * + * <li>The {@link BundleActivator#start} method of this bundle's + * <code>BundleActivator</code>, if one is specified, is called. If the + * <code>BundleActivator</code> is invalid or throws an exception then: + * <ul> + * <li>This bundle's state is set to <code>STOPPING</code>. + * <li>A bundle event of type {@link BundleEvent#STOPPING} is fired. + * <li>Any services registered by this bundle must be unregistered. + * <li>Any services used by this bundle must be released. + * <li>Any listeners registered by this bundle must be removed. + * <li>This bundle's state is set to <code>RESOLVED</code>. + * <li>A bundle event of type {@link BundleEvent#STOPPED} is fired. + * <li>A <code>BundleException</code> is then thrown. + * </ul> + * <i></i> + * <li>If this bundle's state is <code>UNINSTALLED</code>, because this + * bundle was uninstalled while the <code>BundleActivator.start</code> + * method was running, a <code>BundleException</code> is thrown. + * + * <li>This bundle's state is set to <code>ACTIVE</code>. + * + * <li>A bundle event of type {@link BundleEvent#STARTED} is fired. + * </ol> + * + * <b>Preconditions </b> + * <ul> + * <li><code>getState()</code> in {<code>INSTALLED</code>, + * <code>RESOLVED</code>} or {<code>INSTALLED</code>, + * <code>RESOLVED</code>, <code>STARTING</code>} if this bundle has a + * lazy activation policy. + * </ul> + * <b>Postconditions, no exceptions thrown </b> + * <ul> + * <li>Bundle autostart setting is modified unless the + * {@link #START_TRANSIENT} option was set. + * <li><code>getState()</code> in {<code>ACTIVE</code>} unless the + * lazy activation policy was used. + * <li><code>BundleActivator.start()</code> has been called and did not + * throw an exception unless the lazy activation policy was used. + * </ul> + * <b>Postconditions, when an exception is thrown </b> + * <ul> + * <li>Depending on when the exception occurred, bundle autostart setting + * is modified unless the {@link #START_TRANSIENT} option was set. + * <li><code>getState()</code> not in {<code>STARTING</code>, + * <code>ACTIVE</code>}. + * </ul> + * + * @param options The options for starting this bundle. See + * {@link #START_TRANSIENT} and {@link #START_ACTIVATION_POLICY}. + * The Framework must ignore unrecognized options. + * @throws BundleException If this bundle could not be started. This could + * be because a code dependency could not be resolved or the + * specified <code>BundleActivator</code> could not be loaded or + * threw an exception or this bundle is a fragment. + * @throws java.lang.IllegalStateException If this bundle has been + * uninstalled or this bundle tries to change its own state. + * @throws java.lang.SecurityException If the caller does not have the + * appropriate <code>AdminPermission[this,EXECUTE]</code>, and + * the Java Runtime Environment supports permissions. + * @since 1.4 + */ + public void start(int options); + + /** + * Starts this bundle with no options. + * + * <p> + * This method calls <code>start(0)</code>. + * + * @throws BundleException If this bundle could not be started. This could + * be because a code dependency could not be resolved or the + * specified <code>BundleActivator</code> could not be loaded or + * threw an exception or this bundle is a fragment. + * @throws java.lang.IllegalStateException If this bundle has been + * uninstalled or this bundle tries to change its own state. + * @throws java.lang.SecurityException If the caller does not have the + * appropriate <code>AdminPermission[this,EXECUTE]</code>, and + * the Java Runtime Environment supports permissions. + * @see #start(int) + */ + public void start(); + + /** + * Stops this bundle. + * + * <p> + * The following steps are required to stop a bundle: + * <ol> + * <li>If this bundle's state is <code>UNINSTALLED</code> then an + * <code>IllegalStateException</code> is thrown. + * + * <li>If this bundle is in the process of being activated or deactivated + * then this method must wait for activation or deactivation to complete + * before continuing. If this does not occur in a reasonable time, a + * <code>BundleException</code> is thrown to indicate this bundle was + * unable to be stopped. + * <li>If the {@link #STOP_TRANSIENT} option is not set then then set this + * bundle's persistent autostart setting to to <em>Stopped</em>. When the + * Framework is restarted and this bundle's autostart setting is + * <em>Stopped</em>, this bundle must not be automatically started. + * + * <li>If this bundle's state is not <code>ACTIVE</code> then this method + * returns immediately. + * + * <li>This bundle's state is set to <code>STOPPING</code>. + * + * <li>A bundle event of type {@link BundleEvent#STOPPING} is fired. + * + * <li>The {@link BundleActivator#stop} method of this bundle's + * <code>BundleActivator</code>, if one is specified, is called. If that + * method throws an exception, this method must continue to stop this + * bundle. A <code>BundleException</code> must be thrown after completion + * of the remaining steps. + * + * <li>Any services registered by this bundle must be unregistered. + * <li>Any services used by this bundle must be released. + * <li>Any listeners registered by this bundle must be removed. + * + * <li>If this bundle's state is <code>UNINSTALLED</code>, because this + * bundle was uninstalled while the <code>BundleActivator.stop</code> + * method was running, a <code>BundleException</code> must be thrown. + * + * <li>This bundle's state is set to <code>RESOLVED</code>. + * + * <li>A bundle event of type {@link BundleEvent#STOPPED} is fired. + * </ol> + * + * <b>Preconditions </b> + * <ul> + * <li><code>getState()</code> in {<code>ACTIVE</code>}. + * </ul> + * <b>Postconditions, no exceptions thrown </b> + * <ul> + * <li>Bundle autostart setting is modified unless the + * {@link #STOP_TRANSIENT} option was set. + * <li><code>getState()</code> not in {<code>ACTIVE</code>, + * <code>STOPPING</code>}. + * <li><code>BundleActivator.stop</code> has been called and did not + * throw an exception. + * </ul> + * <b>Postconditions, when an exception is thrown </b> + * <ul> + * <li>Bundle autostart setting is modified unless the + * {@link #STOP_TRANSIENT} option was set. + * </ul> + * + * @param options The options for stoping this bundle. See + * {@link #STOP_TRANSIENT}. The Framework must ignore unrecognized + * options. + * @throws BundleException If this bundle's <code>BundleActivator</code> + * threw an exception or this bundle is a fragment. + * @throws java.lang.IllegalStateException If this bundle has been + * uninstalled or this bundle tries to change its own state. + * @throws java.lang.SecurityException If the caller does not have the + * appropriate <code>AdminPermission[this,EXECUTE]</code>, and + * the Java Runtime Environment supports permissions. + * @since 1.4 + */ + public void stop(int options); + + /** + * Stops this bundle with no options. + * + * <p> + * This method calls <code>stop(0)</code>. + * + * @throws BundleException If this bundle's <code>BundleActivator</code> + * threw an exception or this bundle is a fragment. + * @throws java.lang.IllegalStateException If this bundle has been + * uninstalled or this bundle tries to change its own state. + * @throws java.lang.SecurityException If the caller does not have the + * appropriate <code>AdminPermission[this,EXECUTE]</code>, and + * the Java Runtime Environment supports permissions. + * @see #start(int) + */ + public void stop(); + + /** + * Updates this bundle. + * + * <p> + * If this bundle's state is <code>ACTIVE</code>, it must be stopped + * before the update and started after the update successfully completes. + * + * <p> + * If this bundle has exported any packages, these packages must not be + * updated. Instead, the previous package version must remain exported until + * the <code>PackageAdmin.refreshPackages</code> method has been has been + * called or the Framework is relaunched. + * + * <p> + * The following steps are required to update a bundle: + * <ol> + * <li>If this bundle's state is <code>UNINSTALLED</code> then an + * <code>IllegalStateException</code> is thrown. + * + * <li>If this bundle's state is <code>ACTIVE</code>, + * <code>STARTING</code> or <code>STOPPING</code>, this bundle is + * stopped as described in the <code>Bundle.stop</code> method. If + * <code>Bundle.stop</code> throws an exception, the exception is rethrown + * terminating the update. + * + * <li>The download location of the new version of this bundle is + * determined from either this bundle's + * {@link Constants#BUNDLE_UPDATELOCATION} Manifest header (if available) or + * this bundle's original location. + * + * <li>The location is interpreted in an implementation dependent manner, + * typically as a URL, and the new version of this bundle is obtained from + * this location. + * + * <li>The new version of this bundle is installed. If the Framework is + * unable to install the new version of this bundle, the original version of + * this bundle must be restored and a <code>BundleException</code> must be + * thrown after completion of the remaining steps. + * + * <li>If this bundle has declared an Bundle-RequiredExecutionEnvironment + * header, then the listed execution environments must be verified against + * the installed execution environments. If they do not all match, the + * original version of this bundle must be restored and a + * <code>BundleException</code> must be thrown after completion of the + * remaining steps. + * + * <li>This bundle's state is set to <code>INSTALLED</code>. + * + * <li>If the new version of this bundle was successfully installed, a + * bundle event of type {@link BundleEvent#UPDATED} is fired. + * + * <li>If this bundle's state was originally <code>ACTIVE</code>, the + * updated bundle is started as described in the <code>Bundle.start</code> + * method. If <code>Bundle.start</code> throws an exception, a Framework + * event of type {@link FrameworkEvent#ERROR} is fired containing the + * exception. + * </ol> + * + * <b>Preconditions </b> + * <ul> + * <li><code>getState()</code> not in {<code>UNINSTALLED</code>}. + * </ul> + * <b>Postconditions, no exceptions thrown </b> + * <ul> + * <li><code>getState()</code> in {<code>INSTALLED</code>, + * <code>RESOLVED</code>,<code>ACTIVE</code>}. + * <li>This bundle has been updated. + * </ul> + * <b>Postconditions, when an exception is thrown </b> + * <ul> + * <li><code>getState()</code> in {<code>INSTALLED</code>, + * <code>RESOLVED</code>,<code>ACTIVE</code>}. + * <li>Original bundle is still used; no update occurred. + * </ul> + * + * @throws BundleException If the update fails. + * @throws java.lang.IllegalStateException If this bundle has been + * uninstalled or this bundle tries to change its own state. + * @throws java.lang.SecurityException If the caller does not have the + * appropriate <code>AdminPermission[this,LIFECYCLE]</code> for + * both the current bundle and the updated bundle, and the Java + * Runtime Environment supports permissions. + * @see #stop() + * @see #start() + */ + public void update(); + +// /** +// * Updates this bundle from an <code>InputStream</code>. +// * +// * <p> +// * This method performs all the steps listed in <code>Bundle.update()</code>, +// * except the new version of this bundle must be read from the supplied +// * <code>InputStream</code>, rather than a <code>URL</code>. +// * <p> +// * This method must always close the <code>InputStream</code> when it is +// * done, even if an exception is thrown. +// * +// * @param in The <code>InputStream</code> from which to read the new +// * bundle. +// * @throws BundleException If the provided stream cannot be read or the +// * update fails. +// * @throws java.lang.IllegalStateException If this bundle has been +// * uninstalled or this bundle tries to change its own state. +// * @throws java.lang.SecurityException If the caller does not have the +// * appropriate <code>AdminPermission[this,LIFECYCLE]</code> for +// * both the current bundle and the updated bundle, and the Java +// * Runtime Environment supports permissions. +// * @see #update() +// */ +// public void update(InputStream in_); +// +// /** +// * Uninstalls this bundle. +// * +// * <p> +// * This method causes the Framework to notify other bundles that this bundle +// * is being uninstalled, and then puts this bundle into the +// * <code>UNINSTALLED</code> state. The Framework must remove any resources +// * related to this bundle that it is able to remove. +// * +// * <p> +// * If this bundle has exported any packages, the Framework must continue to +// * make these packages available to their importing bundles until the +// * <code>PackageAdmin.refreshPackages</code> method has been called or the +// * Framework is relaunched. +// * +// * <p> +// * The following steps are required to uninstall a bundle: +// * <ol> +// * <li>If this bundle's state is <code>UNINSTALLED</code> then an +// * <code>IllegalStateException</code> is thrown. +// * +// * <li>If this bundle's state is <code>ACTIVE</code>, +// * <code>STARTING</code> or <code>STOPPING</code>, this bundle is +// * stopped as described in the <code>Bundle.stop</code> method. If +// * <code>Bundle.stop</code> throws an exception, a Framework event of type +// * {@link FrameworkEvent#ERROR} is fired containing the exception. +// * +// * <li>This bundle's state is set to <code>UNINSTALLED</code>. +// * +// * <li>A bundle event of type {@link BundleEvent#UNINSTALLED} is fired. +// * +// * <li>This bundle and any persistent storage area provided for this bundle +// * by the Framework are removed. +// * </ol> +// * +// * <b>Preconditions </b> +// * <ul> +// * <li><code>getState()</code> not in {<code>UNINSTALLED</code>}. +// * </ul> +// * <b>Postconditions, no exceptions thrown </b> +// * <ul> +// * <li><code>getState()</code> in {<code>UNINSTALLED</code>}. +// * <li>This bundle has been uninstalled. +// * </ul> +// * <b>Postconditions, when an exception is thrown </b> +// * <ul> +// * <li><code>getState()</code> not in {<code>UNINSTALLED</code>}. +// * <li>This Bundle has not been uninstalled. +// * </ul> +// * +// * @throws BundleException If the uninstall failed. This can occur if +// * another thread is attempting to change this bundle's state and +// * does not complete in a timely manner. +// * @throws java.lang.IllegalStateException If this bundle has been +// * uninstalled or this bundle tries to change its own state. +// * @throws java.lang.SecurityException If the caller does not have the +// * appropriate <code>AdminPermission[this,LIFECYCLE]</code>, and +// * the Java Runtime Environment supports permissions. +// * @see #stop() +// */ +// public void uninstall(); +// +// /** +// * Returns this bundle's Manifest headers and values. This method returns +// * all the Manifest headers and values from the main section of this +// * bundle's Manifest file; that is, all lines prior to the first blank line. +// * +// * <p> +// * Manifest header names are case-insensitive. The methods of the returned +// * <code>Dictionary</code> object must operate on header names in a +// * case-insensitive manner. +// * +// * If a Manifest header value starts with "%", it must be +// * localized according to the default locale. +// * +// * <p> +// * For example, the following Manifest headers and values are included if +// * they are present in the Manifest file: +// * +// * <pre> +// * Bundle-Name +// * Bundle-Vendor +// * Bundle-Version +// * Bundle-Description +// * Bundle-DocURL +// * Bundle-ContactAddress +// * </pre> +// * +// * <p> +// * This method must continue to return Manifest header information while +// * this bundle is in the <code>UNINSTALLED</code> state. +// * +// * @return A <code>Dictionary</code> object containing this bundle's +// * Manifest headers and values. +// * +// * @throws java.lang.SecurityException If the caller does not have the +// * appropriate <code>AdminPermission[this,METADATA]</code>, and +// * the Java Runtime Environment supports permissions. +// * +// * @see Constants#BUNDLE_LOCALIZATION +// */ +// public Dictionary getHeaders(); +// +// /** +// * Returns this bundle's unique identifier. This bundle is assigned a unique +// * identifier by the Framework when it was installed in the OSGi +// * environment. +// * +// * <p> +// * A bundle's unique identifier has the following attributes: +// * <ul> +// * <li>Is unique and persistent. +// * <li>Is a <code>long</code>. +// * <li>Its value is not reused for another bundle, even after a bundle is +// * uninstalled. +// * <li>Does not change while a bundle remains installed. +// * <li>Does not change when a bundle is updated. +// * </ul> +// * +// * <p> +// * This method must continue to return this bundle's unique identifier while +// * this bundle is in the <code>UNINSTALLED</code> state. +// * +// * @return The unique identifier of this bundle. +// */ +// public long getBundleId(); +// +// /** +// * Returns this bundle's location identifier. +// * +// * <p> +// * The location identifier is the location passed to +// * <code>BundleContext.installBundle</code> when a bundle is installed. +// * The location identifier does not change while this bundle remains +// * installed, even if this bundle is updated. +// * +// * <p> +// * This method must continue to return this bundle's location identifier +// * while this bundle is in the <code>UNINSTALLED</code> state. +// * +// * @return The string representation of this bundle's location identifier. +// * @throws java.lang.SecurityException If the caller does not have the +// * appropriate <code>AdminPermission[this,METADATA]</code>, and +// * the Java Runtime Environment supports permissions. +// */ +// public String getLocation(); +// +// /** +// * Returns this bundle's <code>ServiceReference</code> list for all +// * services it has registered or <code>null</code> if this bundle has no +// * registered services. +// * +// * <p> +// * If the Java runtime supports permissions, a <code>ServiceReference</code> +// * object to a service is included in the returned list only if the caller +// * has the <code>ServicePermission</code> to get the service using at +// * least one of the named classes the service was registered under. +// * +// * <p> +// * The list is valid at the time of the call to this method, however, as the +// * Framework is a very dynamic environment, services can be modified or +// * unregistered at anytime. +// * +// * @return An array of <code>ServiceReference</code> objects or +// * <code>null</code>. +// * @throws java.lang.IllegalStateException If this bundle has been +// * uninstalled. +// * @see ServiceRegistration +// * @see ServiceReference +// * @see ServicePermission +// */ +// public ServiceReference[] getRegisteredServices(); +// +// /** +// * Returns this bundle's <code>ServiceReference</code> list for all +// * services it is using or returns <code>null</code> if this bundle is not +// * using any services. A bundle is considered to be using a service if its +// * use count for that service is greater than zero. +// * +// * <p> +// * If the Java Runtime Environment supports permissions, a +// * <code>ServiceReference</code> object to a service is included in the +// * returned list only if the caller has the <code>ServicePermission</code> +// * to get the service using at least one of the named classes the service +// * was registered under. +// * <p> +// * The list is valid at the time of the call to this method, however, as the +// * Framework is a very dynamic environment, services can be modified or +// * unregistered at anytime. +// * +// * @return An array of <code>ServiceReference</code> objects or +// * <code>null</code>. +// * @throws java.lang.IllegalStateException If this bundle has been +// * uninstalled. +// * @see ServiceReference +// * @see ServicePermission +// */ +// public ServiceReference[] getServicesInUse(); +// +// /** +// * Determines if this bundle has the specified permissions. +// * +// * <p> +// * If the Java Runtime Environment does not support permissions, this method +// * always returns <code>true</code>. +// * <p> +// * <code>permission</code> is of type <code>Object</code> to avoid +// * referencing the <code>java.security.Permission</code> class directly. +// * This is to allow the Framework to be implemented in Java environments +// * which do not support permissions. +// * +// * <p> +// * If the Java Runtime Environment does support permissions, this bundle and +// * all its resources including embedded JAR files, belong to the same +// * <code>java.security.ProtectionDomain</code>; that is, they must share +// * the same set of permissions. +// * +// * @param permission The permission to verify. +// * +// * @return <code>true</code> if this bundle has the specified permission +// * or the permissions possessed by this bundle imply the specified +// * permission; <code>false</code> if this bundle does not have the +// * specified permission or <code>permission</code> is not an +// * <code>instanceof</code> <code>java.security.Permission</code>. +// * +// * @throws java.lang.IllegalStateException If this bundle has been +// * uninstalled. +// */ +// public bool hasPermission(Object permission); +// +// /** +// * Find the specified resource from this bundle. +// * +// * This bundle's class loader is called to search for the specified +// * resource. If this bundle's state is <code>INSTALLED</code>, this +// * method must attempt to resolve this bundle before attempting to get the +// * specified resource. If this bundle cannot be resolved, then only this +// * bundle must be searched for the specified resource. Imported packages +// * cannot be searched when this bundle has not been resolved. If this bundle +// * is a fragment bundle then <code>null</code> is returned. +// * +// * @param name The name of the resource. See +// * <code>java.lang.ClassLoader.getResource</code> for a description +// * of the format of a resource name. +// * @return A URL to the named resource, or <code>null</code> if the +// * resource could not be found or if this bundle is a fragment +// * bundle or if the caller does not have the appropriate +// * <code>AdminPermission[this,RESOURCE]</code>, and the Java +// * Runtime Environment supports permissions. +// * +// * @since 1.1 +// * @throws java.lang.IllegalStateException If this bundle has been +// * uninstalled. +// * @see #getEntry +// * @see #findEntries +// */ +// public URL getResource(String name); +// +// /** +// * Returns this bundle's Manifest headers and values localized to the +// * specified locale. +// * +// * <p> +// * This method performs the same function as +// * <code>Bundle.getHeaders()</code> except the manifest header values are +// * localized to the specified locale. +// * +// * <p> +// * If a Manifest header value starts with "%", it must be +// * localized according to the specified locale. If a locale is specified and +// * cannot be found, then the header values must be returned using the +// * default locale. Localizations are searched for in the following order: +// * +// * <pre> +// * bn + "_" + Ls + "_" + Cs + "_" + Vs +// * bn + "_" + Ls + "_" + Cs +// * bn + "_" + Ls +// * bn + "_" + Ld + "_" + Cd + "_" + Vd +// * bn + "_" + Ld + "_" + Cd +// * bn + "_" + Ld +// * bn +// * </pre> +// * +// * Where <code>bn</code> is this bundle's localization basename, +// * <code>Ls</code>, <code>Cs</code> and <code>Vs</code> are the +// * specified locale (language, country, variant) and <code>Ld</code>, +// * <code>Cd</code> and <code>Vd</code> are the default locale (language, +// * country, variant). +// * +// * If <code>null</code> is specified as the locale string, the header +// * values must be localized using the default locale. If the empty string +// * ("") is specified as the locale string, the header values must +// * not be localized and the raw (unlocalized) header values, including any +// * leading "%", must be returned. +// * +// * <p> +// * This method must continue to return Manifest header information while +// * this bundle is in the <code>UNINSTALLED</code> state, however the +// * header values must only be available in the raw and default locale +// * values. +// * +// * @param locale The locale name into which the header values are to be +// * localized. If the specified locale is <code>null</code> then the +// * locale returned by <code>java.util.Locale.getDefault</code> is +// * used. If the specified locale is the empty string, this method +// * will return the raw (unlocalized) manifest headers including any +// * leading "%". +// * @return A <code>Dictionary</code> object containing this bundle's +// * Manifest headers and values. +// * +// * @throws java.lang.SecurityException If the caller does not have the +// * appropriate <code>AdminPermission[this,METADATA]</code>, and +// * the Java Runtime Environment supports permissions. +// * +// * @see #getHeaders() +// * @see Constants#BUNDLE_LOCALIZATION +// * @since 1.3 +// */ +// public Dictionary getHeaders(String locale); +// +// /** +// * Returns the symbolic name of this bundle as specified by its +// * <code>Bundle-SymbolicName</code> manifest header. The name must be +// * unique, it is recommended to use a reverse domain name naming convention +// * like that used for java packages. If this bundle does not have a +// * specified symbolic name then <code>null</code> is returned. +// * +// * <p> +// * This method must continue to return this bundle's symbolic name while +// * this bundle is in the <code>UNINSTALLED</code> state. +// * +// * @return The symbolic name of this bundle. +// * @since 1.3 +// */ +// public String getSymbolicName(); +// +// /** +// * Loads the specified class using this bundle's classloader. +// * +// * <p> +// * If this bundle is a fragment bundle then this method must throw a +// * <code>ClassNotFoundException</code>. +// * +// * <p> +// * If this bundle's state is <code>INSTALLED</code>, this method must +// * attempt to resolve this bundle before attempting to load the class. +// * +// * <p> +// * If this bundle cannot be resolved, a Framework event of type +// * {@link FrameworkEvent#ERROR} is fired containing a +// * <code>BundleException</code> with details of the reason this bundle +// * could not be resolved. This method must then throw a +// * <code>ClassNotFoundException</code>. +// * +// * <p> +// * If this bundle's state is <code>UNINSTALLED</code>, then an +// * <code>IllegalStateException</code> is thrown. +// * +// * @param name The name of the class to load. +// * @return The Class object for the requested class. +// * @throws java.lang.ClassNotFoundException If no such class can be found or +// * if this bundle is a fragment bundle or if the caller does not +// * have the appropriate <code>AdminPermission[this,CLASS]</code>, +// * and the Java Runtime Environment supports permissions. +// * @throws java.lang.IllegalStateException If this bundle has been +// * uninstalled. +// * @since 1.3 +// */ +// public Class loadClass(String name) throws ClassNotFoundException; +// +// /** +// * Find the specified resources from this bundle. +// * +// * This bundle's class loader is called to search for the specified +// * resources. If this bundle's state is <code>INSTALLED</code>, this +// * method must attempt to resolve this bundle before attempting to get the +// * specified resources. If this bundle cannot be resolved, then only this +// * bundle must be searched for the specified resources. Imported packages +// * cannot be searched when a bundle has not been resolved. If this bundle is +// * a fragment bundle then <code>null</code> is returned. +// * +// * @param name The name of the resource. See +// * <code>java.lang.ClassLoader.getResources</code> for a +// * description of the format of a resource name. +// * @return An enumeration of URLs to the named resources, or +// * <code>null</code> if the resource could not be found or if this +// * bundle is a fragment bundle or if the caller does not have the +// * appropriate <code>AdminPermission[this,RESOURCE]</code>, and +// * the Java Runtime Environment supports permissions. +// * +// * @since 1.3 +// * @throws java.lang.IllegalStateException If this bundle has been +// * uninstalled. +// * @throws java.io.IOException If there is an I/O error. +// */ +// public Enumeration getResources(String name) throws IOException; +// +// /** +// * Returns an Enumeration of all the paths (<code>String</code> objects) +// * to entries within this bundle whose longest sub-path matches the +// * specified path. This bundle's classloader is not used to search for +// * entries. Only the contents of this bundle are searched. +// * <p> +// * The specified path is always relative to the root of this bundle and may +// * begin with a "/". A path value of "/" indicates the +// * root of this bundle. +// * <p> +// * Returned paths indicating subdirectory paths end with a "/". +// * The returned paths are all relative to the root of this bundle and must +// * not begin with "/". +// * +// * @param path The path name for which to return entry paths. +// * @return An Enumeration of the entry paths (<code>String</code> +// * objects) or <code>null</code> if no entry could be found or if +// * the caller does not have the appropriate +// * <code>AdminPermission[this,RESOURCE]</code> and the Java +// * Runtime Environment supports permissions. +// * @throws java.lang.IllegalStateException If this bundle has been +// * uninstalled. +// * @since 1.3 +// */ +// public Enumeration getEntryPaths(String path); +// +// /** +// * Returns a URL to the entry at the specified path in this bundle. This +// * bundle's classloader is not used to search for the entry. Only the +// * contents of this bundle are searched for the entry. +// * <p> +// * The specified path is always relative to the root of this bundle and may +// * begin with "/". A path value of "/" indicates the +// * root of this bundle. +// * +// * @param path The path name of the entry. +// * @return A URL to the entry, or <code>null</code> if no entry could be +// * found or if the caller does not have the appropriate +// * <code>AdminPermission[this,RESOURCE]</code> and the Java +// * Runtime Environment supports permissions. +// * +// * @throws java.lang.IllegalStateException If this bundle has been +// * uninstalled. +// * @since 1.3 +// */ +// public URL getEntry(String path); +// +// /** +// * Returns the time when this bundle was last modified. A bundle is +// * considered to be modified when it is installed, updated or uninstalled. +// * +// * <p> +// * The time value is the number of milliseconds since January 1, 1970, +// * 00:00:00 GMT. +// * +// * @return The time when this bundle was last modified. +// * @since 1.3 +// */ +// public long getLastModified(); +// +// /** +// * Returns entries in this bundle and its attached fragments. This bundle's +// * classloader is not used to search for entries. Only the contents of this +// * bundle and its attached fragments are searched for the specified entries. +// * +// * If this bundle's state is <code>INSTALLED</code>, this method must +// * attempt to resolve this bundle before attempting to find entries. +// * +// * <p> +// * This method is intended to be used to obtain configuration, setup, +// * localization and other information from this bundle. This method takes +// * into account that the "contents" of this bundle can be extended +// * with fragments. This "bundle space" is not a namespace with +// * unique members; the same entry name can be present multiple times. This +// * method therefore returns an enumeration of URL objects. These URLs can +// * come from different JARs but have the same path name. This method can +// * either return only entries in the specified path or recurse into +// * subdirectories returning entries in the directory tree beginning at the +// * specified path. Fragments can be attached after this bundle is resolved, +// * possibly changing the set of URLs returned by this method. If this bundle +// * is not resolved, only the entries in the JAR file of this bundle are +// * returned. +// * <p> +// * Examples: +// * +// * <pre> +// * // List all XML files in the OSGI-INF directory and below +// * Enumeration e = b.findEntries("OSGI-INF", "*.xml", true); +// * +// * // Find a specific localization file +// * Enumeration e = b.findEntries("OSGI-INF/l10n", +// * "bundle_nl_DU.properties", +// * false); +// * if (e.hasMoreElements()) +// * return (URL) e.nextElement(); +// * </pre> +// * +// * @param path The path name in which to look. The path is always relative +// * to the root of this bundle and may begin with "/". A +// * path value of "/" indicates the root of this bundle. +// * @param filePattern The file name pattern for selecting entries in the +// * specified path. The pattern is only matched against the last +// * element of the entry path and it supports substring matching, as +// * specified in the Filter specification, using the wildcard +// * character ("*"). If null is specified, this is +// * equivalent to "*" and matches all files. +// * @param recurse If <code>true</code>, recurse into subdirectories. +// * Otherwise only return entries from the specified path. +// * @return An enumeration of URL objects for each matching entry, or +// * <code>null</code> if an entry could not be found or if the +// * caller does not have the appropriate +// * <code>AdminPermission[this,RESOURCE]</code>, and the Java +// * Runtime Environment supports permissions. The URLs are sorted +// * such that entries from this bundle are returned first followed by +// * the entries from attached fragments in ascending bundle id order. +// * If this bundle is a fragment, then only matching entries in this +// * fragment are returned. +// * @since 1.3 +// */ +// public Enumeration findEntries(String path, String filePattern, +// bool recurse); +// +// /** +// * Returns this bundle's {@link BundleContext}. The returned +// * <code>BundleContext</code> can be used by the caller to act on behalf +// * of this bundle. +// * +// * <p> +// * If this bundle is not in the {@link #STARTING}, {@link #ACTIVE}, or +// * {@link #STOPPING} states or this bundle is a fragment bundle, then this +// * bundle has no valid <code>BundleContext</code>. This method will +// * return <code>null</code> if this bundle has no valid +// * <code>BundleContext</code>. +// * +// * @return A <code>BundleContext</code> for this bundle or +// * <code>null</code> if this bundle has no valid +// * <code>BundleContext</code>. +// * @throws java.lang.SecurityException If the caller does not have the +// * appropriate <code>AdminPermission[this,CONTEXT]</code>, and +// * the Java Runtime Environment supports permissions. +// * @since 1.4 +// */ +// public BundleContext getBundleContext(); +}
--- a/dwtx/text/edits/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 transitional//EN"> -<html><head> - <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> - <meta content="IBM" name="Author"> - <meta content="Eclipse Text Editor" name="GENERATOR"> - <title>Text Edits</title> -</head> - -<body> -Provides support for describing and applying textual document editions. -<p> -A complex textual edition can be described by a tree of <tt>TextEdit</tt>s. An edit -can be applied to an <tt>IDocument</tt> by calling <tt>TextEdit.apply</tt> or by -using a <tt>TextEditProcessor</tt>. Applying a text edit can record a reverse edit -description that can be used to undo the edition. -</p> -Use the standard edit kinds to describe the basic document editing operations: -<ul> - <li><em>replace</em> a document range: <tt>ReplaceEdit</tt></li> - <li><em>delete</em> a document range: <tt>DeleteEdit</tt></li> - <li><em>insert</em> text: <tt>InsertEdit</tt></li> - <li><em>track</em> a range while the document is being modified: <tt>RangeMarker</tt></li> -</ul> -<p> -Other subclasses of <tt>TextEdit</tt> exist for specialized tasks. Use <tt>MultiTextEdit</tt> to -compose a complex edit tree, or subclass it to provide a custom edit. -</p> -</body></html> \ No newline at end of file
--- a/dwtx/text/undo/package.html Wed Aug 27 14:49:30 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html><head> - <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> - <meta content="IBM" name="Author"> - <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" name="GENERATOR"><title>Document Undo Support</title></head> - -<body> -<p>Provides undo and redo support for a document.</p> -<h3>Package Specification</h3> -<p>When an <tt>IDocumentUndoManager</tt> is connected to an <tt>IDocument</tt>, - any change to the document is recorded and can then be undone and redone later. - Clients which are interested in undo/redo events can register an <tt>IDocumentUndoistener</tt> - with the <tt>IDocumentUndoManager</tt>.</p> -</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/dwtx.jface.internal.text.html.HTMLMessages.properties Mon Sep 08 00:51:37 2008 +0200 @@ -0,0 +1,16 @@ +############################################################################### +# Copyright (c) 2006 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 +############################################################################### + + +HTMLTextPresenter.ellipse= ... + +# The following property value must end with a space +HTML2TextReader.listItemPrefix=\t-\
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/dwtx.jface.internal.text.link.contentassist.ContentAssistMessages.properties Mon Sep 08 00:51:37 2008 +0200 @@ -0,0 +1,20 @@ +############################################################################### +# 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 +############################################################################### + + +InfoPopup.info_delay_timer_name=AdditionalInfo Delay + +ContentAssistant.assist_delay_timer_name=AutoAssist Delay + +HTMLTextPresenter.ellipse= ... + +# The following property value must end with a space +HTML2TextReader.listItemPrefix=\t-\
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/dwtx.jface.text.JFaceTextMessages.properties Mon Sep 08 00:51:37 2008 +0200 @@ -0,0 +1,45 @@ +############################################################################### +# Copyright (c) 2000, 2007 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 +############################################################################### + + +TextViewer.error.bad_location.WidgetCommand.setEvent= TextViewer.WidgetCommand.setEvent: BadLocationException +TextViewer.error.bad_location.findAndSelect= TextViewer.findAndSelect: BadLocationException +TextViewer.error.bad_location.getBottomIndex= TextViewer.getBottomIndex: BadLocationException +TextViewer.error.bad_location.getBottomIndexEndOffset= TextViewer.getBottomIndexEndOffset: BadLocationException +TextViewer.error.bad_location.getFirstCompleteLineOfRegion= TextViewer.getFirstCompleteLineOfRegion: BadLocationException +TextViewer.error.bad_location.getTopIndex= TextViewer.getTopIndex: BadLocationException +TextViewer.error.bad_location.getTopIndexStartOffset= TextViewer.getTopIndexStartOffset: BadLocationException +TextViewer.error.bad_location.selectContentTypePlugin= TextViewer.selectContentTypePlugin: BadLocationException +TextViewer.error.bad_location.setTopIndex_1= TextViewer.setTopIndex: BadLocationException +TextViewer.error.bad_location.setTopIndex_2= TextViewer.setTopIndex: BadLocationException +TextViewer.error.bad_location.shift_1= TextViewer.shift: BadLocationException +TextViewer.error.bad_location.shift_2= TextViewer.shift: BadLocationException +TextViewer.error.bad_location.verifyText= TextViewer.verifyText: BadLocationException +TextViewer.error.invalid_range= Invalid range argument +TextViewer.error.invalid_visible_region_1= Invalid visible region argument +TextViewer.error.invalid_visible_region_2= Invalid visible region argument + +AbstractHoverInformationControlManager.hover.restarter= Hover Restart Delay + +# The first parameter is the annotation type label and the second is the number of annotations +OverviewRulerHeader.toolTipTextEntry= {0}: {1} + +DefaultUndoManager.operationLabel= Typing +DefaultUndoManager.error.undoFailed.title= Undo Failed +DefaultUndoManager.error.redoFailed.title= Redo Failed + +DefaultAnnotationHover.multipleMarkers= Multiple markers at this line +# The parameter is the text of the list item +DefaultAnnotationHover.listItem= - {0} + +# The parameter is the line number +DefaultAnnotationHover.lineNumber=Line: {0} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/dwtx.jface.text.RegExMessages.properties Mon Sep 08 00:51:37 2008 +0200 @@ -0,0 +1,535 @@ +############################################################################### +# Copyright (c) 2008 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 +# Cagatay Calli <ccalli@gmail.com> - [find/replace] retain caps when replacing - https://bugs.eclipse.org/bugs/show_bug.cgi?id=28949 +# Cagatay Calli <ccalli@gmail.com> - [find/replace] define & fix behavior of retain caps with other escapes and text before \C - https://bugs.eclipse.org/bugs/show_bug.cgi?id=217061 +############################################################################### + +## Content Assist for regular expressions ## +# use \\\u0075 for a backslash-u +displayString_bs_bs= \\\\ - Backslash +additionalInfo_bs_bs= Backslash +displayString_bs_0= \\0nnn - Octal character code +additionalInfo_bs_0= Octal character code\n\nExamples:\n\\011 (tabulator)\n\\0112 (character J) +displayString_bs_x= \\xhh - Hex character code +additionalInfo_bs_x= Hexadecimal character code\n\nExamples:\n\\x09 (tabulator)\n\\x4A or \\x4a (character J) +displayString_bs_u= \\\u0075hhhh - Hex code for Unicode character +additionalInfo_bs_u= Hexadecimal code for Unicode character\n\nExamples:\n\\\u0075004A (character J)\n\\\u007503B2 (lowercase Greek letter beta: \u03B2) +displayString_bs_t= \\t - Tab +additionalInfo_bs_t= Tabulator (\\x09, decimal: 9) +displayString_bs_R= \\R - Line delimiter (platform independent) +additionalInfo_bs_R= Line delimiter (platform independent)\n\n\ +This pattern matches any form of line delimiter, i.e.\n\ +- Windows (\\r\\n)\n\ +- Unix (\\n)\n\ +- Mac OS 9 (\\r)\n\n\ +Note that this pattern does not work inside []. +displayString_bs_n= \\n - Newline +additionalInfo_bs_n= Newline (\\x0A, decimal: 10)\n\n\ +WARNING: \\n only finds newline characters. \ +This can lead to unexpected results when the actual document uses different line delimiters.\n\n\ +RECOMMENDATION: use \\R to find a line delimiter. +displayString_bs_r= \\r - CR +additionalInfo_bs_r= Carriage Return (\\x0D, decimal: 13)\n\n\ +WARNING: \\r only finds carriage return characters. \ +This can lead to unexpected results when the actual document uses different line delimiters.\n\n\ +RECOMMENDATION: use \\R to find a line delimiter. +displayString_bs_f= \\f - FF +additionalInfo_bs_f= Form Feed (\\x0C, decimal: 12) +displayString_bs_a= \\a - Beep +additionalInfo_bs_a= Beep, Bell, Alert (\\x07, decimal: 7) +displayString_bs_e= \\e - Esc +additionalInfo_bs_e= Escape (\\x1B, decimal: 27) +displayString_bs_c= \\cC - Control character +additionalInfo_bs_c= Control character for C\n\nExample:\n\\cC (Ctrl+C, \\x03, decimal: 3) + +displayString_dot= . - Any character +additionalInfo_dot= The dot matches any character except line terminators.\n\n\ +To make the dot match line terminators as well, \n\ +start the expression with the embedded flag expression \n\ +"(?s)" (without quotes). +displayString_bs_d= \\d - A digit +additionalInfo_bs_d= A digit: [0-9] +displayString_bs_D= \\D - Not a digit +additionalInfo_bs_D= Not a digit: [^0-9] +displayString_bs_s= \\s - A whitespace +additionalInfo_bs_s= A whitespace: [ \\t\\n\\x0B\\f\\r] +displayString_bs_S= \\S - Not a whitespace +additionalInfo_bs_S= Not a whitespace: [^\\s] +displayString_bs_w= \\w - An alphanumeric (word character) +additionalInfo_bs_w= An alphanumeric (a word character): [a-zA-Z_0-9] +displayString_bs_W= \\W - Not an alphanumeric +additionalInfo_bs_W= Not an alphanumeric (not a word character): [^\\w] + +displayString_start= ^ - Line start +additionalInfo_start= Line start (positional match)\n\nExample:\n\ +The expression "^Eclipse" matches the term "Eclipse"\n\ +only on the second line of text\n\ +"The Eclipse Project\n\ +Eclipse Platform". +displayString_end= $ - Line end +additionalInfo_end= Line end (positional match)\n\nExample:\n\ +The expression "Eclipse$" matches the term "Eclipse"\n\ +only on the second line of text\n\ +"- Install the Eclipse Platform\n\ +- Run Eclipse". +displayString_bs_b= \\b- Word beginning or end +additionalInfo_bs_b= Word beginning or end (positional match)\n\nExample:\n\ +The expression "s\\b" matches only the last "s" of "glasses" in text\n\ +"I lost my glasses." +displayString_bs_B= \\B - Not a word beginning or end +additionalInfo_bs_B= Not a word beginning or end (positional match)\n\nExample:\n\ +The expression "\\BS" matches only "S" of "printString" in text\n\ +"void print(String printString)". +displayString_bs_A= \\A - Start of input +additionalInfo_bs_A= Start of input (positional match)\n\nExample:\n\ +The expression "\\ABC" matches only "BC" of "BCD" in text\n\ +"BCD ABC\n\ +BCDEF". +displayString_bs_G= \\G - Previous match's end +additionalInfo_bs_G= Previous match's end (positional match)\n\nExample:\n\ +The expression "\\Ga" matches the first and then the second "a" in text\n\ +"aardvark" (when starting from the beginning). +displayString_bs_Z= \\Z - End of input, does not consider last line terminator +additionalInfo_bs_Z= End of input, does not consider last line terminator (positional match)\n\n\ +The expression matches at the end of the file, except for when the\n\ +file ends in a line terminator, in which case it matches before that\n\ +line terminator.\n\nExample:\n\ +The expression "ing\\Z" matches "ing" in text\n\ +"testing", as well as in text\n\ +"testing\n\ +", but doesn't match in text\n\ +"testing\n\ +\n\ +" +displayString_bs_z= \\z - End of input +additionalInfo_bs_z= End of input (positional match)\n\nExample:\n\ +The expression "ing\\z" matches "ing" in text\n\ +"testing", but doesn't match in text\n\ +"testing\n\ +" + +### repetition quantifiers ### +displayString_quest= ? - Greedy match 0 or 1 times +additionalInfo_quest= Greedy match 0 or 1 times.\n\n\ +First tries to match the preceding token.\n\ +Falls back to not matching if this choice made a full match impossible.\n\nExample:\n\ +The expression "fo?" matches "f", "fo", and "fo" in text\n\ +"f fo foo". +displayString_star= * - Greedy match 0 or more times +additionalInfo_star= Greedy match 0 or more times.\n\n\ +First tries to match the preceding token as many times as possible.\n\ +Falls back to matching it less often if this choice made a full match impossible.\n\nExamples:\n\ +- The expression "fo*" matches "f", "fo", and "foo" in text\n\ +"f fo foo".\n\ +- The expression "fo*o\\d" matches all three words in text\n\ +"fo1 foo2 fooo3".\n\ +- The expression "<.*>" matches the whole text\n\ +"<p><b>bold</b>". +displayString_plus= + - Greedy match 1 or more times +additionalInfo_plus= Greedy match 1 or more times\n\n\ +First tries to match the preceding token as many times as possible.\n\ +Falls back to matching it less often if this choice made a full match impossible.\n\nExamples:\n\ +- The expression "fo+" matches "fo" and "foo" in text\n\ +"f fo foo".\n\ +- The expression "fo+o\\d" matches "foo2" and "fooo3" in text\n\ +"fo1 foo2 fooo3".\n\ +- The expression "<.+>" matches the whole text\n\ +"<p><b>bold</b>", but does not match anywhere in "<>". +displayString_exact= {n} - Greedy match exactly n times +additionalInfo_exact= Greedy match exactly n times.\n\nExamples:\n\ +- The expression "\\\\0[0-3][0-7]{2}" matches all three-digit octal character tokens.\n\ +- The expression "\\b\\w{4}\\b" matches all four-letter-words\n\ +such as "Java", "cool", or "food" (but not "dog"). +displayString_least= {n,} - Greedy match >= n times +additionalInfo_least= Greedy match >= n times.\n\n\ +First tries to match the preceding token as many times as possible.\n\ +Falls back to matching it less often (but at least n times),\n\ +if this choice made a full match impossible.\n\nExamples:\n\ +- The expression "fo{2,}" matches "foo" and "fooo" in text\n\ +"f fo foo fooo".\n\ +- The expression "fo{2,}o\\d" matches "fooo3" and "foooo4" in text\n\ +"fo1 foo2 fooo3 foooo4".\n\ +- The expression "10{3,}[^0]" matches all powers of ten that are larger than one thousand.\n\n\ +Note: The expressions "{0,}" and "*" are equivalent;\n\ +likewise, "{1,}" is equivalent to "+". +displayString_count= {n,m} - Greedy match >= n times but <= m times +additionalInfo_count= Greedy match >= n times but <= m times.\n\n\ +First tries to match the preceding token m times.\n\ +Falls back to matching it less often (but at least n times),\n\ +if this choice made a full match impossible.\n\nExamples:\n\ +- The expression "fo{1,2}" matches "fo", "foo", and "foo" in text\n\ +"f fo foo fooo".\n\ +- The expression "fo{1,2}o\\d" matches "foo2" and "fooo3" in text\n\ +"fo1 foo2 fooo3 foooo4".\n\ +- The expression "^.{70,80}$" matches all the lines that contain\n\ +between 70 and 80 characters (inclusive). + +displayString_questLazy= ?? - Lazy match 0 or 1 times +additionalInfo_questLazy= Lazy match 0 or 1 times.\n\n\ +First tries to not match the preceding token.\n\ +Falls back to matching it if this choice made a full match impossible.\n\nExample:\n\ +The expression "fo??" matches "f", "f", and "f" in text\n\ +"f fo foo". +displayString_starLazy= *? - Lazy match 0 or more times +additionalInfo_starLazy= Lazy match 0 or more times.\n\n\ +First tries to not match the preceding token.\n\ +Falls back to matching it more often if this choice made a full match impossible.\n\nExamples:\n\ +- The expression "fo*?" matches "f", "f", and "f" in text\n\ +"f fo foo".\n\ +- The expression "fo*?o\\d" matches all three words in text\n\ +"fo1 foo2 fooo3".\n\ +- The expression "<.*?>" matches "<p>", "<b>", and "</b>" in text\n\ +"<p><b>bold</b>". Note: a more performant expression for finding\n\ +xml tags is "<[^>]*>", which avoids backtracking. +displayString_plusLazy= +? - Lazy match 1 or more times +additionalInfo_plusLazy= Lazy match 1 or more times\n\n\ +First tries to match the preceding token once.\n\ +Falls back to matching it more often if this choice made a full match impossible.\n\nExamples:\n\ +- The expression "fo+?" matches "fo" and "fo" in text\n\ +"f fo foo".\n\ +- The expression "fo+?o\\d" matches "foo2" and "fooo3" in text\n\ +"fo1 foo2 fooo3".\n\ +- The expression "<.+?>" matches "<p>", "<b>", and "</b>" in text\n\ +"<p><b>bold</b>". Note: a more performant expression for finding\n\ +xml tags is "<[^>]*>", which avoids backtracking. +displayString_exactLazy= {n}? - Lazy match exactly n times +additionalInfo_exactLazy= Lazy match exactly n times.\n\n\ +This expression is equivalent to the expression\n\ +{n} - Greedy match exactly n times. +displayString_leastLazy= {n,}? - Lazy match >= n times +additionalInfo_leastLazy= Lazy match >= n times.\n\n\ +First tries to match the preceding token n times. Falls back to\n\ +matching it more often, if this choice made a full match impossible.\n\nExamples:\n\ +- The expression "fo{2,}?" matches "foo" and "foo" in text\n\ +"f fo foo fooo".\n\ +- The expression "fo{2,}?o\\d" matches "fooo3" and "foooo4" in text\n\ +"fo1 foo2 fooo3 foooo4".\n\ +- The expression "10{3,}?[^0]" matches all powers of ten that are larger than one thousand.\n\n\ +Note: The expressions "{0,}?" and "*?" are equivalent;\n\ +likewise, "{1,}?" is equivalent to "+?". +displayString_countLazy= {n,m}? - Lazy match >= n times but <= m times +additionalInfo_countLazy= Lazy match >= n times but <= m times.\n\n\ +First tries to match the preceding token n times.\n\ +Falls back to matching it more often (but at most m times),\n\ +if this choice made a full match impossible.\n\nExamples:\n\ +- The expression "fo{1,2}?" matches "fo", "fo", and "fo" in text\n\ +"f fo foo fooo".\n\ +- The expression "fo{1,2}?o\\d" matches "foo2" and "fooo3" in text\n\ +"fo1 foo2 fooo3 foooo4".\n\ + +displayString_questPoss= ?+ - Possessive match 0 or 1 times (no backtracking) +additionalInfo_questPoss= Possessive match 0 or 1 times.\n\n\ +Matches the preceding token if possible. Never backtracks,\n\ +even if this choice renders a full match impossible.\n\nExample:\n\ +The expression "fo?+o\\d" matches the first, but not the second line in text\n\ +"foo1\n\ +fo1". +displayString_starPoss= *+ Possessive match 0 or more times (no backtracking) +additionalInfo_starPoss= Possessive match 0 or more times.\n\n\ +Tries to match the preceding token as many times as possible. Never backtracks,\n\ +even if this choice renders a full match impossible.\n\nExamples:\n\ +- The expression "fo*+" matches "f", "fo" and "foo" in text\n\ +"f fo foo".\n\ +- The expression "fo*+o\\d" matches nowhere in text\n\ +"fo1 foo2 fooo3".\n\ +- The expression "<.*+>" matches nowhere in text\n\ +"<p><b>bold</b>". +displayString_plusPoss= ++ - Possessive match 1 or more times (no backtracking) +additionalInfo_plusPoss= Possessive match 1 or more times.\n\n\ +Tries to match the preceding token as many times as possible. Never backtracks,\n\ +even if this choice renders a full match impossible.\n\nExamples:\n\ +- The expression "fo++" matches "fo" and "foo" in text\n\ +"f fo foo".\n\ +- The expression "fo++o\\d" matches nowhere in text\n\ +"fo1 foo2 fooo3".\n\ +- The expression "<.++>" matches nowhere in text\n\ +"<p><b>bold</b>". + +displayString_exactPoss= {n}+ - Possessive match exactly n times (no backtracking) +additionalInfo_exactPoss= Possessive match exactly n times.\n\n\ +This expression is equivalent to the expression\n\ +{n} - Greedy match exactly n times. +displayString_leastPoss= {n,}+ - Possessive match >= n times (no backtracking) +additionalInfo_leastPoss= Possessive match >= n times.\n\n\ +Tries to match the preceding token as many times as possible, but at least n times.\n\ +Never backtracks, even if this choice renders a full match impossible.\n\nExamples:\n\ +- The expression "fo{2,}+" matches "foo" and "fooo" in text\n\ +"f fo foo fooo".\n\ +- The expression "fo{2,}?o\\d" matches nowhere in text\n\ +"fo1 foo2 fooo3 foooo4".\n\ +Note: The expressions "{0,}?" and "*?" are equivalent;\n\ +likewise, "{1,}?" is equivalent to "+?". + +displayString_countPoss= {n,m}+ - Possessive match >= n times but <= m times (no backtracking) +additionalInfo_countPoss= Possessive match >= n times but <= m times.\n\n\ +Tries to match the preceding token as many times as possible, \n\ +at least n times and at most m times.\n\ +Never backtracks, even if this choice renders a full match impossible.\n\nExamples:\n\ +- The expression "fo{1,2}+" matches "fo", "foo", and "foo" in text\n\ +"f fo foo fooo".\n\ +- The expression "fo{1,2}+o\\d" matches only "fooo3" in text\n\ +"fo1 foo2 fooo3 foooo4".\n\ +- The expression "^.{70,80}+$" matches all the lines that contain\n\ +between 70 and 80 characters (inclusive). + +displayString_alt= U|V - Alternation: U or V +additionalInfo_alt= Alternation.\n\n\ +First tries to match subexpression U. Falls back and tries to match V if U didn't match.\n\nExamples:\n\ +- The expression "A|B" applied to text "BA" first matches "B", then "A".\n\ +- The expression "AB|BC|CD" applied to text "ABC BC DAB" matches, in sequence:\n\ +"AB" in the first word, the second word "BC", "AB" at the very end. +displayString_group= (Expr) - Mark Expr as capturing group +additionalInfo_group= Mark Expr as capturing group.\n\n\ +Capturing groups are numbered by counting their opening parentheses from left to right.\n\ +In the expression "((A)(B(C)))", for example, there are four such groups:\n\ +1 ((A)(B(C)))\n\ +2 (A)\n\ +3 (B(C))\n\ +4 (C)\n\ +\n\ +Group zero always stands for the entire expression. During a match,\n\ +each subsequence of the input sequence that matches such a group is saved.\n\ +The captured subsequence i may be used later in the expression, via a back reference "\\i",\n\ +and may also be used in the replace string via "$i".\n\ +\n\ +Note: Groups beginning with (? are pure, non-capturing groups that\n\ +do not capture text and do not count towards the group total. + +displayString_bs_i= \\i - Match of the capturing group i +additionalInfo_bs_i= Match of the capturing group i.\n\n\ +\\i matches the subsequence that has already been saved as capturing group i.\n\ +\\0 is not a valid group number in the regular expression.\n\nExample:\n\ +The expression "(\\d+)\\+\\1" matches "10+10" in text "9+10+10+11".\n\ +\n\ +Note: in the replace string, $i stands for the capturing group i. + +displayString_bs= \\ - Quote next character +additionalInfo_bs= Quote next character\n\nExample:\n\ +The expression "\\{\\n\\}" matches the text "{n}". + +displayString_bs_Q= \\Q - Start quoting +additionalInfo_bs_Q= Start quoting\n\n\ +All characters between \\Q and the next \\E are taken literally and are not interpreted.\n\nExample:\n\ +The expression "\\Qnew int[] {42}\\E;" matches text "new int[] {42}". +displayString_bs_E= \\E - End quoting +additionalInfo_bs_E= End quoting\n\n\ +All characters between \\Q and the next \\E are taken literally and are not interpreted.\n\nExample:\n\ +The expression "\\Qnew int[] {42}\\E;" matches text "new int[] {42}". + +displayString_set= [ecl] - Character set +additionalInfo_set= Character set\n\n\ +Matches a single character out of the set.\n\nExample:\n\ +The expression "[ecl]" matches "c" and "l" in text "cold". +displayString_setExcl= [^ecl] - Excluded character set +additionalInfo_setExcl= Excluded character set\n\n\ +Matches a single character that is not one of the excluded characters.\n\nExamples:\n\ +The expression "[^ecl]" matches "o" and "d" in text "cold".\n\ +The expression "[a-z&&[^ecl]]" matches any character from a to z, excluding e, c, and l. +displayString_setRange= [c-l] - Character range +additionalInfo_setRange= Character range\n\n\ +Matches a single character out of the range from 'c' to 'l'.\n\nExamples:\n\ +The expression "[c-l]" matches "c", "l", and "d" in text "cold".\n\ +The expression "[a-z&&[^ecl]]" matches any character from a to z, excluding e, c, and l. +displayString_setInter= && - Intersection of character sets +additionalInfo_setInter= Intersection of character sets\n\n\ +Matches a character that is in both of the given sets.\n\nExample:\n\ +The expression "[a-z&&[^ecl]]" matches any character from a to z, excluding e, c, and l. + +displayString_posix= \\p{Class} - POSIX or Unicode character class +additionalInfo_posix= POSIX or Unicode character class\n\n\ +Matches a character from the given character class 'Class'.\n\ +Valid classes are:\n\ +\n\ +- POSIX character classes (US-ASCII only):\n\ +\ Lower, Upper, ASCII, Alpha, Digit, Alnum, Punct,\n\ +\ Graph, Print, Blank, Cntrl, XDigit, and Space.\n\ +\n\ +- Unicode blocks (with the prefix 'In'), e.g.:\n\ +\ InBasicLatin\n\ +\ InLatin-1Supplement\n\ +\ InGreek\n\ +\n\ +- Unicode categories, e.g.:\n\ +\ Lu: Uppercase Letter\n\ +\ Ll: Lowercase Letter\n\ +\ L: Letter\n\ +\ N: Number\n\ +\ Z: Separator\n\ +\ LD: Letter or Digit\n\ +\ L1: Latin-1 + +displayString_posixNot= \\P{Class} - Excluded POSIX or Unicode character class +additionalInfo_posixNot= Excluded POSIX or Unicode character class\n\n\ +Negation of character set \\p{Class}. Example:\n\ +\\P{ASCII} is equivalent to [^\\p{ASCII}] and matches all non-ASCII characters.\n\n\ +Valid classes are:\n\ +\n\ +- POSIX character classes (US-ASCII only):\n\ +\ Lower, Upper, ASCII, Alpha, Digit, Alnum, Punct,\n\ +\ Graph, Print, Blank, Cntrl, XDigit, and Space.\n\ +\n\ +- Unicode blocks (with the prefix 'In'), e.g.:\n\ +\ InBasicLatin\n\ +\ InLatin-1Supplement\n\ +\ InGreek\n\ +\n\ +- Unicode categories, e.g.:\n\ +\ Lu: Uppercase Letter\n\ +\ Ll: Lowercase Letter\n\ +\ L: Letter\n\ +\ N: Number\n\ +\ Z: Separator\n\ +\ LD: Letter or Digit\n\ +\ L1: Latin-1 + + +#Flags: +displayString_flag= (?ismd-ismd) - Turn flags on or off +additionalInfo_flag= Turn flags on and off for the rest of the matching process.\n\n\ +Flags before the dash are turned on; those after the dash are turned off.\n\ +The following flags are supported:\n\ +- i: case-insensitive matching\n\ +\n\ +- s: single-line, or dotall matching mode:\n\ +\ The expression . matches any character, including a line terminator.\n\ +\n\ +- m: multiline matching mode:\n\ +\ The expressions ^ and $ match just after or just before,\n\ +\ respectively, a line terminator or the end of the input sequence.\n\ +\ When multiline matching is turned off, these expressions only\n\ +\ match at the beginning and the end of the entire input sequence.\n\ +\ This flag is ON by default.\n\ +\n\ +- d: Unix lines matching mode:\n\ +\ Only the '\\n' line terminator\n\ +\ is recognized in the behavior of ., ^, and $ +# - u: unicode-aware case folding:\n\ +# Case-insensitive matching, when enabled, is done in a manner consistent\n\ +# with the Unicode Standard. By default, case-insensitive matching\n\ +# assumes that only characters in the US-ASCII charset are being matched. +# - c: canonical equivalence\n\ +# Two characters will be considered to match if, and only if, their full\n\ +# canonical decompositions match. The expression "a\\\u0075030A", for example,\n\ +# will match the string "a\u030A" when this flag is specified.\n\ +# By default, matching does not take canonical equivalence into account. +# - x: comments mode\n\ +# Whitespace is ignored, and embedded comments starting with\n\ +# # are ignored until the end of a line.\n\ + +displayString_flagExpr= (?ismd-ismd:Expr) - Turn flags on or off in Expr +additionalInfo_flagExpr= Turn flags on and off in Expr.\n\n\ +Flags before the dash are turned on; those after the dash are turned off.\n\ +The following flags are supported:\n\ +- i: case-insensitive matching\n\ +\n\ +- s: single-line, or dotall matching mode:\n\ +\ The expression . matches any character, including a line terminator.\n\ +\n\ +- m: multiline matching mode:\n\ +\ The expressions ^ and $ match just after or just before,\n\ +\ respectively, a line terminator or the end of the input sequence.\n\ +\ When multiline matching is turned off, these expressions only\n\ +\ match at the beginning and the end of the entire input sequence.\n\ +\ This flag is ON by default.\n\ +\n\ +- d: Unix lines matching mode:\n\ +\ Only the '\\n' line terminator\n\ +\ is recognized in the behavior of ., ^, and $ + + +#Noncapturing groups: +displayString_nonCap= (?:Expr) - Non-capturing group +additionalInfo_nonCap= Non-capturing group of regular expression Expr.\n\n\ +The group is not saved in a back reference.\n\nExample:\n\ +The expression "(?:\\w+) (\\d+)" matches "bug 42" in text "It's bug 42.".\n\ +A back reference "$1" in the replace string will be replaced by "42". + +displayString_atomicCap= (?>Expr) - Non-capturing atomic group +additionalInfo_atomicCap= Non-capturing atomic group of regular expression Expr.\n\n\ +Matches the regular expression Expr once, but does not backtrack into the expression\n\ +again if the first match did not prove to be successful later on.\n\ +The group is not saved in a back reference. + +#Lookaround: +displayString_posLookahead= (?=Expr) - Zero-width positive lookahead +additionalInfo_posLookahead= Expr, via zero-width positive lookahead.\n\n\ +Matches a position (zero-width: does not consume the matched characters),\n\ +where the next characters (-> lookahead)\n\ +do match (-> positive) the embedded expression Expr.\n\nExamples:\n\ +- The expression "var(?==)" matches only the first "var" in text "var=17; other=var;".\n\ +- The expression "\\b(?=\\w{7}\\b)\\w*clip\\w*\\b" matches any\n\ +seven-letter-word that contains "clip". It matches "Eclipse", but not "paperclip". + +displayString_negLookahead= (?!Expr) - Zero-width negative lookahead +additionalInfo_negLookahead= Expr, via zero-width negative lookahead.\n\n\ +Matches a position (zero-width: does not consume the matched characters),\n\ +where the next characters (-> lookahead)\n\ +do not match (-> negative) the embedded expression Expr.\n\nExamples:\n\ +- The expression "var(?!=)" matches only the second "var" in text "var=17; other=var;".\n\ +- The expression "\\b(?!\\w{5,7}\\b)\\w*clip\\w*\\b" matches any\n\ +word that contains "clip" and consists of less than 5 or more than 7 characters.\n\ +It matches "clip" and "paperclip", but not "Eclipse". + +displayString_posLookbehind= (?<=Expr) - Zero-width positive lookbehind +additionalInfo_posLookbehind= Expr, via zero-width positive lookbehind.\n\n\ +Matches a position (zero-width: does not consume the matched characters),\n\ +where the previous characters (-> lookbehind)\n\ +do match (-> positive) the embedded expression Expr.\n\nExample:\n\ +- The expression "\\w{5,}+(?<=as)\\b" matches "alias" and "bananas",\n\ +but does not match "peas", "apples", or "Alaska". + +displayString_negLookbehind= (?<!Expr) - Zero-width negative lookbehind +additionalInfo_negLookbehind= Expr, via zero-width negative lookbehind.\n\n\ +Matches a position (zero-width: does not consume the matched characters),\n\ +where the previous characters (-> lookbehind)\n\ +do not match (-> negative) the embedded expression Expr.\n\nExample:\n\ +- The expression "\\w{5,}+(?<!as)\\b" matches "Eclipse" and "apples",\n\ +but does not match "peas" or "bananas". + +#Replace string: +displayString_dollar= $i - Match of the capturing group i +additionalInfo_dollar= Match of the capturing group i.\n\n\ +$i is the string that has been saved as capturing group i.\n\ +$0 is the subsequence matched by the entire expression.\n\ +\n\ +Note: in the find expression, \\i stands for the capturing group i. +displayString_replace_cap= \\i - Match of the capturing group i +additionalInfo_replace_cap= Match of the capturing group i.\n\n\ +\\i is the string that has been saved as capturing group i.\n\ +\\0 is the subsequence matched by the entire expression.\n\ +\n\ +Note: \\i is equivalent to $i +displayString_replace_bs= \\ - Quote next character +additionalInfo_replace_bs= Quote next character\n\nExamples:\n\ +"\\$" will be replaced by "$".\n\ +"\\q" will be replaced by "q".\n\ +"\\\\" will be replaced by "\\". +displayString_replace_bs_n= \\n - Newline +additionalInfo_replace_bs_n= Newline (\\x0A, decimal: 10)\n\n\ +Note that \\n always inserts the newline character,\n\ +even if the document uses different line delimiters.\n\n\ +To insert the document line delimiter, use \\R. +displayString_replace_bs_r= \\r - CR +additionalInfo_replace_bs_r= Carriage Return (\\x0D, decimal: 13)\n\n\ +Note that \\r always inserts the carriage return character,\n\ +even if the document uses different line delimiters.\n\n\ +To insert the document line delimiter, use \\R. +displayString_replace_bs_R= \\R - Line delimiter +additionalInfo_replace_bs_R= Line delimiter\n\n\ +Inserts the default line delimiter of the document. +displayString_replace_bs_C=\\C - Retain case +additionalInfo_replace_bs_C=\\C - Retain casing of match (all lower case, all upper case, capitalized)\n\ +when replacing expression after \\C.\n\nExamples:\n\ +Find: "foo" Replace: "my\\Cbar\\CFar"\n\ +"foo" will be replaced by "mybarfar".\n\ +"FOO" will be replaced by "myBARFAR".\n\ +"Foo" will be replaced by "myBarFar".\n\n\ +Note that the content of a group ($i, \\i) is currently inserted unmodified. +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/dwtx.jface.text.TextMessages.properties Mon Sep 08 00:51:37 2008 +0200 @@ -0,0 +1,16 @@ +############################################################################### +# Copyright (c) 2008 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 +############################################################################### + +FindReplaceDocumentAdapter.illegalControlEscape= Illegal control escape sequence {0} +FindReplaceDocumentAdapter.illegalHexEscape= Illegal hexadecimal escape sequence {0} +FindReplaceDocumentAdapter.illegalLinebreak=Illegal position for \\R +FindReplaceDocumentAdapter.illegalUnicodeEscape= Illegal Unicode escape sequence {0} +FindReplaceDocumentAdapter.incompatibleLineDelimiter= Incompatible line delimiter
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/dwtx.jface.text.contentassist.JFaceTextMessages.properties Mon Sep 08 00:51:37 2008 +0200 @@ -0,0 +1,17 @@ +############################################################################### +# Copyright (c) 2000, 2006 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 +############################################################################### + + +InfoPopup.info_delay_timer_name=Additional info timer +AdditionalInfoController.job_name=Computing additional info + +ContentAssistant.assist_delay_timer_name=AutoAssist Delay +CompletionProposalPopup.no_proposals=no proposals
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/dwtx.jface.text.hyperlink.HyperlinkMessages.properties Mon Sep 08 00:51:37 2008 +0200 @@ -0,0 +1,16 @@ +############################################################################### +# Copyright (c) 2008 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 +############################################################################### + +LinkListInformationControl.unknownLink= Unknown Hyperlink + +MultipleHyperlinkPresenter.clickLinkAfordance =Click link to open + +URLHyperlink.hyperlinkText= Open ''{0}'' in a browser
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/dwtx.jface.text.templates.JFaceTextTemplateMessages.properties Mon Sep 08 00:51:37 2008 +0200 @@ -0,0 +1,14 @@ +############################################################################### +# 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 +############################################################################### + +# template proposal +TemplateProposal.displayString= {0} - {1} +TemplateProposal.errorDialog.title=Template Evaluation Error
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/dwtx.jface.text.templates.TextTemplateMessages.properties Mon Sep 08 00:51:37 2008 +0200 @@ -0,0 +1,25 @@ +############################################################################### +# Copyright (c) 2000, 2006 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 +############################################################################### + +# template translator +TemplateTranslator.error.incomplete.variable=Template has incomplete variables. Type '$$' if to enter the dollar character. +TemplateTranslator.error.invalid.identifier=Template has invalid variable identifiers. +TemplateTranslator.error.incompatible.type=Template variable ''{0}'' has incompatible types + +# global variables +GlobalVariables.variable.description.cursor=The cursor position after editing template variables +GlobalVariables.variable.description.dollar=The dollar symbol +GlobalVariables.variable.description.date=Current date +GlobalVariables.variable.description.year=Current year +GlobalVariables.variable.description.time=Current time +GlobalVariables.variable.description.user=User name +GlobalVariables.variable.description.selectedWord= The selected word +GlobalVariables.variable.description.selectedLines= The selected lines