X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpeclipse/ui/editor/ShowExternalPreviewAction.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpeclipse/ui/editor/ShowExternalPreviewAction.java index 154ddff..2679fb4 100644 --- a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpeclipse/ui/editor/ShowExternalPreviewAction.java +++ b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpeclipse/ui/editor/ShowExternalPreviewAction.java @@ -7,6 +7,7 @@ import net.sourceforge.phpeclipse.webbrowser.views.BrowserView; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.preference.IPreferenceStore; @@ -15,6 +16,7 @@ import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; +import org.eclipse.ui.progress.WorkbenchJob; import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.TextEditorAction; @@ -67,9 +69,16 @@ public class ShowExternalPreviewAction extends TextEditorAction { boolean bringToTopPreview = ProjectPrefUtil.getPreviewBooleanValue( previewFile, IPreferenceConstants.PHP_BRING_TO_TOP_PREVIEW_DEFAULT); + boolean stickyBrowserURL = ProjectPrefUtil.getPreviewBooleanValue( + previewFile, + IPreferenceConstants.PHP_STICKY_BROWSER_URL_DEFAULT); if (autoPreview) { IWorkbenchPage page = WebUI.getActivePage(); + if (page == null) { + // startup stage + return; + } try { // IViewPart part = page.findView(BrowserView.ID_BROWSER); // if (part == null) { @@ -79,11 +88,31 @@ public class ShowExternalPreviewAction extends TextEditorAction { IWorkbenchPage.VIEW_CREATE); if (part != null) { if (bringToTopPreview) { - page.bringToTop(part); + // page.bringToTop(part); + new WorkbenchJob(getClass().getName()) { + public IStatus runInUIThread( + IProgressMonitor monitor) { + IWorkbenchPage page = WebUI.getActivePage(); + if (page != null) { + IViewPart part = page + .findView(BrowserView.ID_BROWSER); + if (part != null) { + page.bringToTop(part); + } + } + return Status.OK_STATUS; + } + }.schedule(); } // ((BrowserView) part).refresh(); - String localhostURL = getLocalhostURL(null, previewFile); - ((BrowserView) part).refresh(localhostURL); + if (stickyBrowserURL + && ((BrowserView) part).getUrl() != null + && ((BrowserView) part).getUrl().length() > 0) { + ((BrowserView) part).refresh(); + } else { + String localhostURL = getLocalhostURL(null, previewFile); + ((BrowserView) part).refresh(localhostURL); + } } } catch (PartInitException e) { // ad hoc @@ -117,12 +146,14 @@ public class ShowExternalPreviewAction extends TextEditorAction { store = WebUI.getDefault().getPreferenceStore(); } // IPath path = file.getFullPath(); - String localhostURL = file.getLocation().toString(); + String localhostURL = file.getFullPath().toString(); String lowerCaseFileName = localhostURL.toLowerCase(); + //removed by ed_mann for RSE fixes testing // String documentRoot = // store.getString(PHPeclipsePlugin.DOCUMENTROOT_PREF); - IPath documentRootPath = ProjectPrefUtil.getDocumentRoot(file - .getProject()); + //IPath documentRootPath = ProjectPrefUtil.getDocumentRoot(file + // .getProject()); + IPath documentRootPath = file.getProject().getFullPath(); String documentRoot = documentRootPath.toString().toLowerCase(); if (lowerCaseFileName.startsWith(documentRoot)) { localhostURL = localhostURL.substring(documentRoot.length()); @@ -131,9 +162,12 @@ public class ShowExternalPreviewAction extends TextEditorAction { } // return store.getString(PHPeclipsePlugin.LOCALHOST_PREF) + // localhostURL; - return ProjectPrefUtil.getMiscProjectsPreferenceValue(file - .getProject(), IPreferenceConstants.PHP_LOCALHOST_PREF) - + localhostURL; + String projectPath = ProjectPrefUtil.getMiscProjectsPreferenceValue(file + .getProject(), IPreferenceConstants.PHP_LOCALHOST_PREF); + if(projectPath.endsWith("/") && localhostURL.startsWith("/")) { + localhostURL = localhostURL.substring(1); + } + return projectPath + localhostURL; } return "http://localhost"; }