1aa69ff91f6d85dd4563025822d1c05cea4632b3
[phpeclipse.git] /
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     String str;
50     Integer posInteger;
51     IFile currentFile = ((IFileEditorInput) editor.getEditorInput()).getFile();
52     for (int i = 0; i < startPositionList.size(); i++) {
53       posInteger = (Integer) startPositionList.get(i);
54       str = getWikiString(editor, doc, posInteger.intValue());
55       
56       if (str != null && !str.equals("")) {
57         if (!wikiNames.contains(str)) {
58           IFile file = getWikiFile(currentFile, str);
59           filesList.add(file);
60           wikiNames.add(str);
61         }
62       } 
63     }
64     
65     if (filesList.size() > 0) {
66       IFile[] files = new IFile[filesList.size()];
67       filesList.toArray(files);
68
69       Job job = new CreateFilesJob(files);
70       //        job.setRule(createRule(files));
71       job.setRule(null);
72       job.setUser(true);
73       job.schedule();
74     }
75 //
76 //    
77 //    Iterator iter = wikiNames.iterator();
78 //    while (iter.hasNext()) {
79 //      openWikiFile(file, (String) iter.next(), false);
80 //    }
81   }
82
83 //  public void openWikiFile(IFile cfile, String word, boolean openEditor) {
84 //    if (word != null && !word.equals("")) {
85 //      IFile file = getWikiFile(cfile, word);
86 //      try {
87 //        createNewFileIfNeeded(file, word);
88 //      } catch (Exception e) {
89 //      }
90 //    } 
91 //  }
92 }