public void openWikiLinkOnSelection() {
IDocument doc = getDocument();
- // ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
- // int pos = selection.getOffset();
- ArrayList startPositionList = new ArrayList();
- char[] text = doc.get().toCharArray();
- try {
- char ch = ' ';
- int i = 0;
- int startPos = -1;
- while (true) {
- ch = text[i++];
- switch (ch) {
- case '[':
- ch = text[i++];
- if (ch == '[') {
- startPos = i;
- }
- break;
- case ']':
- ch = text[i++];
- if (ch == ']' && startPos != (-1)) {
- startPositionList.add(new Integer(startPos));
- }
- break;
- case '\r':
- case '\n':
- startPos = -1;
- break;
- }
- }
- } catch (IndexOutOfBoundsException e) {
- // ignore it
- }
+ 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);
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();
+
}
-//
-//
-// Iterator iter = wikiNames.iterator();
-// while (iter.hasNext()) {
-// openWikiFile(file, (String) iter.next(), false);
-// }
}
-// 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) {
-// }
-// }
-// }
+ /**
+ * @param doc
+ * @return
+ */
+ private ArrayList getLinksStartingPosition(IDocument doc) {
+ ArrayList startPositionList = new ArrayList();
+ char[] text = doc.get().toCharArray();
+ try {
+ char ch = ' ';
+ int i = 0;
+ int startPos = -1;
+ while (true) {
+ ch = text[i++];
+ switch (ch) {
+ case '[':
+ ch = text[i++];
+ if (ch == '[') {
+ startPos = i;
+ }
+ break;
+ case ']':
+ ch = text[i++];
+ if (ch == ']' && startPos != (-1)) {
+ startPositionList.add(new Integer(startPos));
+ startPos = -1;
+ }
+ break;
+ case '\r':
+ case '\n':
+ startPos = -1;
+ break;
+ }
+ }
+ } catch (IndexOutOfBoundsException e) {
+ // ignore it
+ }
+ return startPositionList;
+ }
}
\ No newline at end of file