Author: pkluegl Date: Wed Jan 30 12:28:36 2013 New Revision: 1440371 URL: http://svn.apache.org/viewvc?rev=1440371&view=rev Log: UIMA-2603 - added new field to remember the internally set type systems, e.g., by the file chooser. This field is asked before any other strategies to determine the type system are applied.
Modified: uima/uimaj/trunk/uimaj-ep-cas-editor-ide/src/main/java/org/apache/uima/caseditor/ide/DefaultCasDocumentProvider.java Modified: uima/uimaj/trunk/uimaj-ep-cas-editor-ide/src/main/java/org/apache/uima/caseditor/ide/DefaultCasDocumentProvider.java URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-ep-cas-editor-ide/src/main/java/org/apache/uima/caseditor/ide/DefaultCasDocumentProvider.java?rev=1440371&r1=1440370&r2=1440371&view=diff ============================================================================== --- uima/uimaj/trunk/uimaj-ep-cas-editor-ide/src/main/java/org/apache/uima/caseditor/ide/DefaultCasDocumentProvider.java (original) +++ uima/uimaj/trunk/uimaj-ep-cas-editor-ide/src/main/java/org/apache/uima/caseditor/ide/DefaultCasDocumentProvider.java Wed Jan 30 12:28:36 2013 @@ -166,6 +166,14 @@ public class DefaultCasDocumentProvider */ private Map<String, String> documentToTypeSystemMap = new HashMap<String, String>(); + /** + * This map stores temporarily the type system that should be used to open the next document. + * This functionality is separated from documentToTypeSystemMap since the preference for using + * the previously selected type system can be deactivated. The inlined file choose, for example, + * uses this field to remember the chosen type system. + */ + private Map<String, String> typeSystemForNextDocumentOnly = new HashMap<String, String>(); + private Map<String, IPreferenceStore> sessionPreferenceStores = new HashMap<String, IPreferenceStore>(); /** @@ -220,12 +228,20 @@ public class DefaultCasDocumentProvider // set by the editor for this specific CAS. // apply that type system only if the setting is active in the preferences String typeSystemFileString = null; + + String document = casFile.getFullPath().toPortableString(); + if(typeSystemForNextDocumentOnly.get(document) != null) { + // the type system was already set internally. Use this one and forget the information. + typeSystemFileString = typeSystemForNextDocumentOnly.get(document); + typeSystemForNextDocumentOnly.put(document, null); + } + IPreferenceStore prefStore = CasEditorIdePlugin.getDefault().getPreferenceStore(); boolean useLastTypesystem = prefStore .getBoolean(CasEditorIdePreferenceConstants.CAS_EDITOR_REMEMBER_TYPESYSTEM); if (useLastTypesystem) { typeSystemFileString = documentToTypeSystemMap - .get(casFile.getFullPath().toPortableString()); + .get(document); } if (typeSystemFileString != null) typeSystemFile = ResourcesPlugin.getWorkspace().getRoot() @@ -359,7 +375,7 @@ public class DefaultCasDocumentProvider typeSystemPreferences.put(prefFile.getFullPath().toPortableString(), tsPrefStore); } - documentToTypeSystemMap.put(casFile.getFullPath().toPortableString(), typeSystemFile + documentToTypeSystemMap.put(document, typeSystemFile .getFullPath().toPortableString()); IPreferenceStore store = sessionPreferenceStores.get(getTypesystemId(element)); @@ -537,6 +553,11 @@ public class DefaultCasDocumentProvider documentToTypeSystemMap.put(document, typeSystem); } + void setTypeSystemForNextDocumentOnly(String document, String typeSystem) { + typeSystemForNextDocumentOnly.put(document, typeSystem); + } + + @Override public Composite createTypeSystemSelectorForm(final ICasEditor editor, Composite parent, IStatus status) { @@ -565,8 +586,8 @@ public class DefaultCasDocumentProvider if (resource != null) { FileEditorInput editorInput = (FileEditorInput) editor.getEditorInput(); - setTypeSystem(editorInput.getFile().getFullPath().toPortableString(), resource - .getFullPath().toString()); + setTypeSystemForNextDocumentOnly(editorInput.getFile().getFullPath().toPortableString(), + resource.getFullPath().toString()); // Now set the input again to open the editor with the // specified type system