''Open Wiki link'' and ''Create Files for Wiki link'' every new created file creates...
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.wiki / src / net / sourceforge / phpeclipse / wiki / actions / CreateFilesFromLinksEditorAction.java
1 package net.sourceforge.phpeclipse.wiki.actions;
2
3 import java.util.ArrayList;
4 import java.util.HashSet;
5
6 import org.eclipse.core.resources.IFile;
7 import org.eclipse.core.runtime.jobs.Job;
8 import org.eclipse.jface.text.IDocument;
9 import org.eclipse.ui.IFileEditorInput;
10
11 public final class CreateFilesFromLinksEditorAction extends OpenWikiLinkEditorAction {
12
13   public void openWikiLinkOnSelection() {
14     IDocument doc = getDocument();
15     //    ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
16     //    int pos = selection.getOffset();
17     ArrayList startPositionList = new ArrayList();
18     char[] text = doc.get().toCharArray();
19     try { 
20       char ch = ' ';
21       int i = 0;
22       int startPos = -1;
23       while (true) {
24         ch = text[i++];
25         switch (ch) {
26         case '[':
27           ch = text[i++];
28           if (ch == '[') {
29             startPos = i;
30           }
31           break;
32         case ']':
33           ch = text[i++];
34           if (ch == ']' && startPos != (-1)) {
35             startPositionList.add(new Integer(startPos));
36           }
37           break;
38         case '\r':
39         case '\n':
40           startPos = -1;
41           break;
42         }
43       }
44     } catch (IndexOutOfBoundsException e) {
45       // ignore it
46     }
47     HashSet wikiNames = new HashSet();
48     ArrayList filesList = new ArrayList();
49     ArrayList wikiList = new ArrayList();
50     String wikiTitle;
51     Integer posInteger;
52     IFile currentFile = ((IFileEditorInput) editor.getEditorInput()).getFile();
53     for (int i = 0; i < startPositionList.size(); i++) {
54       posInteger = (Integer) startPositionList.get(i);
55       wikiTitle = getWikiTitle(editor, doc, posInteger.intValue());
56       
57       if (wikiTitle != null && !wikiTitle.equals("")) {
58         if (!wikiNames.contains(wikiTitle)) {
59           IFile file = getWikiFile(currentFile, wikiTitle);
60           filesList.add(file);
61           wikiList.add(wikiTitle);
62           wikiNames.add(wikiTitle);
63         }
64       } 
65     }
66     
67     if (filesList.size() > 0) {
68       IFile[] files = new IFile[filesList.size()];
69       String[] wikiTitles = new String[filesList.size()];
70       filesList.toArray(files);
71       wikiList.toArray(wikiTitles);
72       Job job = new CreateFilesJob(files, wikiTitles);
73       //        job.setRule(createRule(files));
74       job.setRule(null);
75       job.setUser(true);
76       job.schedule();
77     }
78 //
79 //    
80 //    Iterator iter = wikiNames.iterator();
81 //    while (iter.hasNext()) {
82 //      openWikiFile(file, (String) iter.next(), false);
83 //    }
84   }
85
86 //  public void openWikiFile(IFile cfile, String word, boolean openEditor) {
87 //    if (word != null && !word.equals("")) {
88 //      IFile file = getWikiFile(cfile, word);
89 //      try {
90 //        createNewFileIfNeeded(file, word);
91 //      } catch (Exception e) {
92 //      }
93 //    } 
94 //  }
95 }