X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Util.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Util.java new file mode 100644 index 0000000..4d154f7 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Util.java @@ -0,0 +1,197 @@ +package net.sourceforge.phpeclipse.wiki.preferences; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +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.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.QualifiedName; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.plog4u.wiki.filter.FilterUtil; + +public class Util { + public static Shell findShell() { + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window != null) { + return window.getShell(); + } + Display display = Display.getCurrent(); + if (display == null) { + display = Display.getDefault(); + return display.getActiveShell(); + } + // worst case, just create our own. + return new Shell(WikiEditorPlugin.getStandardDisplay()); + } + + public static String getProjectsWikiOutputPath(IResource resource, String key) { + return getOverlayedPrefProjectValue(resource, WikiProjectPreferences.PREF_ID, key); + // int index = temp.indexOf(File.pathSeparatorChar); + // if (index >= 0) { + // temp = temp.substring(0, index); + // } + // return temp; + } + + public static String getPreferenceValue(IResource resource, String key) { + return getOverlayedPrefProjectValue(resource, WikiProjectPreferences.PREF_ID, key); + } + + public static String getHTMLFileName(IFile file, String binBasePath, String srcBasePath) { + StringBuffer htmlBuffer = new StringBuffer(); + String htmlName = null; + // String srcBasePath = Util.getWikiTextsPath(file); + // String fileName = file.getProjectRelativePath().toString(); + String fileName = file.getLocation().toString(); + if (fileName.startsWith(srcBasePath)) { + fileName = fileName.substring(srcBasePath.length()); + if (fileName.charAt(0) != '/') { + fileName = "/" + fileName; + } + int index = fileName.lastIndexOf(".wp"); + if (index >= 0) { + htmlName = binBasePath + fileName.substring(0, index) + ".html"; + } else { + htmlName = binBasePath + fileName; + } + } + return htmlName; + } + + public static String getOverlayedPrefProjectValue(IResource resource, String pageId, String key) { + IProject project = resource.getProject(); + String value = null; + if (useProjectSettings(project, pageId)) { + value = getProperty(resource, pageId, key); + } + if (value != null) + return value; + return WikiEditorPlugin.getDefault().getPreferenceStore().getString(key); + } + + public static String getOverlayedPrefResourceValue(IResource resource, String pageId, String key) { + String value = null; + if (useProjectSettings(resource, pageId)) { + value = getProperty(resource, pageId, key); + } + if (value != null) + return value; + return WikiEditorPlugin.getDefault().getPreferenceStore().getString(key); + } + + private static String getProperty(IResource resource, String pageId, String key) { + try { + return resource.getPersistentProperty(new QualifiedName(pageId, key)); + } catch (CoreException e) { + } + return null; + } + + private static void setProperty(IResource resource, String pageId, String key, String value) { + try { + resource.setPersistentProperty(new QualifiedName(pageId, key), value); + } catch (CoreException e) { + } + } + + private static boolean useProjectSettings(IResource resource, String pageId) { + String use = getProperty(resource, pageId, FieldEditorOverlayPage.USEPROJECTSETTINGS); + return "true".equals(use); + } + + public static void setWikiTextsPath(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"); + } + String htmlFolder = store.getString(WikiEditorPlugin.HTML_OUTPUT_PATH); + if (htmlFolder == null || htmlFolder.equals("")) { + // set a global default + store.setValue(WikiEditorPlugin.HTML_OUTPUT_PATH, value + "/wpbin"); + } + 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"); + + // IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + // IResource resource = root.findMember(project.getLocation()); + NullProgressMonitor _monitor = new NullProgressMonitor(); + // if (resource!=null && resource.exists() && (resource instanceof IContainer)) { + // IContainer container = (IContainer) resource; + final IFolder srcFolder = project.getFolder(new Path("wpsrc")); + if (!srcFolder.exists()) { + try { + srcFolder.create(true, false, _monitor); + } catch (CoreException e) { + } + } + final IFolder binFolder = project.getFolder(new Path("wpbin")); + if (!binFolder.exists()) { + try { + binFolder.create(true, false, _monitor); + } catch (CoreException e) { + } + } + // } + + } + + public static String getWikiTextsPath(IResource file) { + return Util.getPreferenceValue(file.getProject(), WikiEditorPlugin.WIKI_TEXTS_BASE_PATH); + } + + 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) { + String filePath = currentFile.getLocation().toString(); + // String basePath = currentFile.getProject().getLocation().toString(); + String basePath = getWikiTextsPath(currentFile); + StringBuffer result = new StringBuffer(); + int lastIndex = filePath.lastIndexOf(".wp"); + if (lastIndex < 0) { + lastIndex = filePath.length(); + } + char ch; + for (int i = basePath.length() + 1; i < lastIndex; i++) { + ch = filePath.charAt(i); + switch (ch) { + case '/': + result.append(':'); + break; + default: + result.append(ch); + } + } + return result.toString(); + } + + public static String getWikiTitle(IFile currentFile) { + String fileName = currentFile.getName(); + String fileExt = currentFile.getFileExtension().toLowerCase(); + if (fileExt.equals("wp")) { + return fileName.substring(0, fileName.length() - 3); + } + return null; + } +} \ No newline at end of file