+++ /dev/null
-package net.sourceforge.phpeclipse.wiki.actions.mediawiki;
-
-import java.io.ByteArrayInputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-
-import net.sourceforge.phpeclipse.wiki.editor.WikiEditor;
-import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin;
-import net.sourceforge.phpeclipse.wiki.preferences.Util;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceStatus;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IEditorActionDelegate;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.dialogs.ListSelectionDialog;
-import org.eclipse.ui.internal.dialogs.ListContentProvider;
-import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-
-public final class RefreshWikiTextEditorAction implements IEditorActionDelegate {
-
- private IWorkbenchWindow window;
-
- private AbstractTextEditor fEditor;
-
- public void dispose() {
- }
-
- public void init(IWorkbenchWindow window) {
- this.window = window;
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
- if (selection.isEmpty()) {
- return;
- }
- if (selection instanceof TextSelection) {
- action.setEnabled(true);
- return;
- }
- if (window.getActivePage() != null && window.getActivePage().getActivePart() != null) {
- action.setEnabled(window.getActivePage().getActivePart().getClass().equals(WikiEditor.class));
- }
- }
-
- public void run(IAction action) {
- if (fEditor == null) {
- IEditorPart targetEditor = window.getActivePage().getActiveEditor();
- if (targetEditor != null && (targetEditor instanceof AbstractTextEditor)) {
- fEditor = (AbstractTextEditor) targetEditor;
- }
- }
- if (fEditor != null) {
- openWikiLinkOnSelection();
- }
- }
-
- public void setActiveEditor(IAction action, IEditorPart targetEditor) {
- if (targetEditor != null && (targetEditor instanceof AbstractTextEditor)) {
- fEditor = (AbstractTextEditor) targetEditor;
- }
- }
-
- public IDocument getDocument() {
- IDocument doc = fEditor.getDocumentProvider().getDocument(fEditor.getEditorInput());
- return doc;
- }
-
- public void openWikiLinkOnSelection() {
- IDocument doc = getDocument();
- ITextSelection selection = (ITextSelection) fEditor.getSelectionProvider().getSelection();
- int pos = selection.getOffset();
- // String textRegion = getWikiString(fEditor, doc, pos);
- IFileEditorInput ei = (IFileEditorInput) fEditor.getEditorInput();
- openWikiFile(ei.getFile());
- }
-
- void openWikiFile(IFile cfile) {
- String wikiName = getWikiFile(cfile);
- try {
- if (fEditor != null) {
- selectWiki(wikiName);
- }
- } catch (Exception e) {
- }
-
- }
-
- private void selectWiki(String wikiName) {
- String exampleWikiURL = "http://en.wikibooks.org/w/wiki.phtml";
- String selectedWikiURL = null;
- ArrayList locationsList = new ArrayList();
- locationsList.add(exampleWikiURL);
-
- Collections.sort(locationsList);
-
- ListSelectionDialog listSelectionDialog = new ListSelectionDialog(WikiEditorPlugin.getDefault().getWorkbench()
- .getActiveWorkbenchWindow().getShell(), locationsList, new ListContentProvider(), new LabelProvider(),
- "Select the refresh URL.");
- listSelectionDialog.setTitle("Multiple active configuration found");
- if (listSelectionDialog.open() == Window.OK) {
- Object[] locations = listSelectionDialog.getResult();
- if (locations != null) {
- for (int i = 0; i < locations.length; i++) {
- selectedWikiURL = (String) locations[i];
- break;
- }
- }
- }
-
- if (selectedWikiURL != null && !selectedWikiURL.equals("")) {
- String wikiContent = MediaWikiConnector.getWikiText(wikiName, selectedWikiURL);
- if (wikiContent != null) {
- IDocument doc = fEditor.getDocumentProvider().getDocument(fEditor.getEditorInput());
- doc.set(wikiContent);
- }
- }
- }
-
- private void createNewFileIfNeeded(IFile file, String word) throws CoreException {
- if (!file.exists()) {
- createWikiFile(file, word);
- }
- }
-
- private String getWikiFile(IFile file) {
- return Util.getFileWikiName(file, WikiEditorPlugin.HTML_OUTPUT_PATH);
- // IPath path = new Path(wikiFileName);
- // return ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);
- }
-
- /**
- * Creates a folder resource handle for the folder with the given workspace path. This method does not create the folder resource;
- * this is the responsibility of <code>createFolder</code>.
- *
- * @param folderPath
- * the path of the folder resource to create a handle for
- * @return the new folder resource handle
- * @see #createFolder
- */
- private IFolder createFolderHandle(IPath folderPath) {
- return IDEWorkbenchPlugin.getPluginWorkspace().getRoot().getFolder(folderPath);
- }
-
- private void createFolder(IFolder folderHandle, IProgressMonitor monitor) throws CoreException {
- try {
- // Create the folder resource in the workspace
- // Recursive to create any folders which do 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) {
- // If the folder already existed locally, just refresh to get contents
- if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED)
- folderHandle.refreshLocal(IResource.DEPTH_INFINITE, new SubProgressMonitor(monitor, 500));
- else
- throw e;
- }
- }
-
- private void createWikiFile(IFile file, String word) throws CoreException {
- IContainer parent = file.getParent();
- if (parent instanceof IFolder && (!((IFolder) parent).exists())) {
- createFolder((IFolder) parent, null);
- }
- String newText = "<!--" + word + "-->";
- byte[] buffer = newText.getBytes();
- ByteArrayInputStream source = new ByteArrayInputStream(buffer);
- file.create(source, true, null);
- }
-
-}
\ No newline at end of file