public void openWikiLinkOnSelection() {
IDocument doc = getDocument();
- // ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
- // int pos = selection.getOffset();
+ ArrayList startPositionList = getLinksStartingPosition(doc);
+
+ HashSet wikiNames = new HashSet();
+ ArrayList filesList = new ArrayList();
+ ArrayList wikiList = new ArrayList();
+ String wikiTitle;
+ Integer posInteger;
+ IFile currentFile = ((IFileEditorInput) editor.getEditorInput()).getFile();
+
+ for (int i = 0; i < startPositionList.size(); i++) {
+ posInteger = (Integer) startPositionList.get(i);
+ wikiTitle = getWikiTitle(editor, doc, posInteger.intValue());
+
+ if (wikiTitle != null && !wikiTitle.equals("")) {
+ if (!wikiNames.contains(wikiTitle)) {
+ IFile file = getWikiFile(currentFile, wikiTitle);
+ filesList.add(file);
+ wikiList.add(wikiTitle);
+ wikiNames.add(wikiTitle);
+ }
+ }
+ }
+
+ if (filesList.size() > 0) {
+ IFile[] files = new IFile[filesList.size()];
+ String[] wikiTitles = new String[filesList.size()];
+ filesList.toArray(files);
+ wikiList.toArray(wikiTitles);
+
+ Job job = new CreateFilesJob(files, wikiTitles);
+ // job.setRule(createRule(files));
+ job.setRule(null);
+ job.setUser(true);
+ job.schedule();
+
+ }
+ }
+
+ /**
+ * @param doc
+ * @return
+ */
+ private ArrayList getLinksStartingPosition(IDocument doc) {
ArrayList startPositionList = new ArrayList();
char[] text = doc.get().toCharArray();
try {
ch = text[i++];
if (ch == ']' && startPos != (-1)) {
startPositionList.add(new Integer(startPos));
+ startPos = -1;
}
break;
case '\r':
} catch (IndexOutOfBoundsException e) {
// ignore it
}
- HashSet wikiNames = new HashSet();
- ArrayList filesList = new ArrayList();
- String str;
- Integer posInteger;
- IFile currentFile = ((IFileEditorInput) editor.getEditorInput()).getFile();
- for (int i = 0; i < startPositionList.size(); i++) {
- posInteger = (Integer) startPositionList.get(i);
- str = getWikiString(editor, doc, posInteger.intValue());
-
- if (str != null && !str.equals("")) {
- if (!wikiNames.contains(str)) {
- IFile file = getWikiFile(currentFile, str);
- filesList.add(file);
- wikiNames.add(str);
- }
- }
- }
-
- if (filesList.size() > 0) {
- IFile[] files = new IFile[filesList.size()];
- filesList.toArray(files);
-
- Job job = new CreateFilesJob(files);
- // job.setRule(createRule(files));
- job.setRule(null);
- job.setUser(true);
- job.schedule();
- }
-//
-//
-// Iterator iter = wikiNames.iterator();
-// while (iter.hasNext()) {
-// openWikiFile(file, (String) iter.next(), false);
-// }
+ return startPositionList;
}
-
-// public void openWikiFile(IFile cfile, String word, boolean openEditor) {
-// if (word != null && !word.equals("")) {
-// IFile file = getWikiFile(cfile, word);
-// try {
-// createNewFileIfNeeded(file, word);
-// } catch (Exception e) {
-// }
-// }
-// }
}
\ No newline at end of file