X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/CreateFilesFromLinksEditorAction.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/CreateFilesFromLinksEditorAction.java index 5f6739b..0fa5c0d 100644 --- a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/CreateFilesFromLinksEditorAction.java +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/CreateFilesFromLinksEditorAction.java @@ -12,48 +12,19 @@ public final class CreateFilesFromLinksEditorAction extends OpenWikiLinkEditorAc 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); @@ -61,35 +32,60 @@ public final class CreateFilesFromLinksEditorAction extends OpenWikiLinkEditorAc 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