Improved PDF export (every article is a chapter, outline, FileDialog)
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.wiki / src / net / sourceforge / phpeclipse / wiki / preferences / Util.java
index 4d154f7..2fe1463 100644 (file)
@@ -10,6 +10,7 @@ import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.QualifiedName;
@@ -21,6 +22,18 @@ import org.eclipse.ui.PlatformUI;
 import org.plog4u.wiki.filter.FilterUtil;
 
 public class Util {
+  public static String titleToDB(String in) {
+    return in.replaceAll(" ", "_");
+  }
+
+  public static String db2Title(String in) {
+    return in.replaceAll("_", " ");
+  }
+
+  public static String db2TitleLink(String in) {
+    return "[[" + in.replaceAll("_", " ") + "]]";
+  }
+
   public static Shell findShell() {
     IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
     if (window != null) {
@@ -49,6 +62,12 @@ public class Util {
   }
 
   public static String getHTMLFileName(IFile file, String binBasePath, String srcBasePath) {
+    return getHTMLFileName(file,binBasePath,srcBasePath, ".html");
+  }
+  public static String getXMLFileName(IFile file, String binBasePath, String srcBasePath) {
+    return getHTMLFileName(file,binBasePath,srcBasePath, ".xml");
+  }
+  public static String getHTMLFileName(IFile file, String binBasePath, String srcBasePath, String fileExtension) {
     StringBuffer htmlBuffer = new StringBuffer();
     String htmlName = null;
     //    String srcBasePath = Util.getWikiTextsPath(file);
@@ -61,7 +80,7 @@ public class Util {
       }
       int index = fileName.lastIndexOf(".wp");
       if (index >= 0) {
-        htmlName = binBasePath + fileName.substring(0, index) + ".html";
+        htmlName = binBasePath + fileName.substring(0, index) + fileExtension;
       } else {
         htmlName = binBasePath + fileName;
       }
@@ -110,12 +129,16 @@ public class Util {
     return "true".equals(use);
   }
 
-  public static void setWikiTextsPath(IProject project) {
+  public static void setWikiBuilderPreferences(IProject project) {
     String value = project.getLocation().toString();
     IPreferenceStore store = WikiEditorPlugin.getDefault().getPreferenceStore();
     String globalBasePath = store.getString(WikiEditorPlugin.WIKI_TEXTS_BASE_PATH);
     if (globalBasePath == null || globalBasePath.equals("")) {
       store.setValue(WikiEditorPlugin.WIKI_TEXTS_BASE_PATH, value + "/wpsrc");
+      store.setValue(WikiEditorPlugin.LOCAL_TEMPLATE_FILE_NAME, value + "/wpsrc/main.vm");
+      store.setValue(WikiEditorPlugin.EXPORT_TEMPLATE_FILE_NAME, value + "/wpsrc/export.vm");
+      store.setValue(WikiEditorPlugin.LOCAL_CSS_URL, "file://" + value + "/wpsrc/main.css");
+      store.setValue(WikiEditorPlugin.EXPORT_CSS_URL, "file://" + value + "/wpsrc/main.css");
     }
     String htmlFolder = store.getString(WikiEditorPlugin.HTML_OUTPUT_PATH);
     if (htmlFolder == null || htmlFolder.equals("")) {
@@ -125,7 +148,10 @@ public class Util {
     setProperty(project, WikiProjectPreferences.PREF_ID, FieldEditorOverlayPage.USEPROJECTSETTINGS, "true");
     setProperty(project, WikiProjectPreferences.PREF_ID, WikiEditorPlugin.WIKI_TEXTS_BASE_PATH, value + "/wpsrc");
     setProperty(project, WikiProjectPreferences.PREF_ID, WikiEditorPlugin.HTML_OUTPUT_PATH, value + "/wpbin");
-
+    setProperty(project, WikiProjectPreferences.PREF_ID, WikiEditorPlugin.LOCAL_TEMPLATE_FILE_NAME, value + "/wpsrc/main.vm");
+    setProperty(project, WikiProjectPreferences.PREF_ID, WikiEditorPlugin.EXPORT_TEMPLATE_FILE_NAME, value + "/wpsrc/export.vm");
+    setProperty(project, WikiProjectPreferences.PREF_ID, WikiEditorPlugin.LOCAL_CSS_URL, "file://" + value + "/wpsrc/main.css");
+    setProperty(project, WikiProjectPreferences.PREF_ID, WikiEditorPlugin.EXPORT_CSS_URL, "file://" + value + "/wpsrc/main.css");
     //    IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
     //    IResource resource = root.findMember(project.getLocation());
     NullProgressMonitor _monitor = new NullProgressMonitor();
@@ -153,19 +179,52 @@ public class Util {
     return Util.getPreferenceValue(file.getProject(), WikiEditorPlugin.WIKI_TEXTS_BASE_PATH);
   }
 
+  public static String getLocalTemplate(IResource file) {
+    return Util.getPreferenceValue(file.getProject(), WikiEditorPlugin.LOCAL_TEMPLATE_FILE_NAME);
+  }
+
+  public static String getLocalCssUrl(IResource file) {
+    return Util.getPreferenceValue(file.getProject(), WikiEditorPlugin.LOCAL_CSS_URL);
+  }
+
+  public static String getExportTemplate(IResource file) {
+    return Util.getPreferenceValue(file.getProject(), WikiEditorPlugin.EXPORT_TEMPLATE_FILE_NAME);
+  }
+
+  public static String getExportCssUrl(IResource file) {
+    return Util.getPreferenceValue(file.getProject(), WikiEditorPlugin.EXPORT_CSS_URL);
+  }
+
   public static String getProjectsWikiTextsPath(IProject project) {
     return Util.getPreferenceValue(project, WikiEditorPlugin.WIKI_TEXTS_BASE_PATH);
   }
-  
+
   public static String getWikiFileName(String wikiLink, IFile currentFile, String key) {
     //    String basePath = currentFile.getProject().getLocation().toString();
     String basePath = getWikiTextsPath(currentFile);
     return basePath + "/" + FilterUtil.normalizeWikiLink(wikiLink) + ".wp";
   }
 
-  public static String getFileWikiName(IFile currentFile, String key) {
+  /**
+   * Extract the wiki name from the current filename, but doesn't replace '_' characters
+   * 
+   * @param currentFile
+   * @return
+   */
+  public static String getURLWikiName(IFile currentFile) {
+    return getURLWikiName(currentFile, false);
+  }
+
+  /**
+   * Extract the wiki name from the current filename, replaces '_' with ' ' characters if
+   * <code>replaceUnderscore==true</code>
+   * 
+   * @param currentFile
+   * @param replaceUnderscore
+   * @return
+   */
+  public static String getURLWikiName(IFile currentFile, boolean replaceUnderscore) {
     String filePath = currentFile.getLocation().toString();
-    //    String basePath = currentFile.getProject().getLocation().toString();
     String basePath = getWikiTextsPath(currentFile);
     StringBuffer result = new StringBuffer();
     int lastIndex = filePath.lastIndexOf(".wp");
@@ -176,16 +235,30 @@ public class Util {
     for (int i = basePath.length() + 1; i < lastIndex; i++) {
       ch = filePath.charAt(i);
       switch (ch) {
-      case '/':
-        result.append(':');
-        break;
+//      case '/':
+//        result.append(':');
+//        break;
       default:
-        result.append(ch);
+        if (ch == '_' && replaceUnderscore) {
+          result.append(' ');
+        } else { 
+          result.append(ch);
+        }
       }
     }
     return result.toString();
   }
 
+  /**
+   * Extract the wiki name from the current filename, replaces all '_' with ' ' characters
+   * 
+   * @param currentFile
+   * @return
+   */
+  public static String getReadableWikiName(IFile currentFile) {
+    return getURLWikiName(currentFile, true);
+  }
+
   public static String getWikiTitle(IFile currentFile) {
     String fileName = currentFile.getName();
     String fileExt = currentFile.getFileExtension().toLowerCase();
@@ -194,4 +267,30 @@ public class Util {
     }
     return null;
   }
+
+  /**
+   * Create the folder resource in the workspace
+   * Recursive to create any folders which does not exist already
+   * 
+   * @param folderHandle
+   * @param monitor
+   */
+  public static void createFolder(IFolder folderHandle, IProgressMonitor monitor) {
+    try {
+      // Create the folder resource in the workspace
+      // Recursive to create any folders which does not exist already
+      if (!folderHandle.exists()) {
+        IContainer parent = folderHandle.getParent();
+        if (parent instanceof IFolder && (!((IFolder) parent).exists())) {
+          createFolder((IFolder) parent, monitor);
+        }
+        //                 if (linkTargetPath != null)
+        //                             folderHandle.createLink(linkTargetPath, IResource.ALLOW_MISSING_LOCAL, monitor);
+        //                 else
+        folderHandle.create(false, true, monitor);
+      }
+    } catch (CoreException e) {
+  
+    }
+  }
 }
\ No newline at end of file