plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/preview/AbstractPreviewPage.java
author Eugene Ostroukhov <eugeneo@symbian.org>
Thu, 02 Sep 2010 10:50:38 -0700
changeset 483 109da596fa9d
parent 480 b6d992b9b998
child 484 f5df819c1852
permissions -rw-r--r--
Fixed relevant FindBug messages
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     1
package org.symbian.tools.tmw.previewer.preview;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     2
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     3
import java.net.URI;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     4
import java.util.Collection;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     5
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     6
import org.eclipse.core.resources.IFile;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     7
import org.eclipse.core.resources.IProject;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     8
import org.eclipse.core.resources.ResourcesPlugin;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     9
import org.eclipse.core.runtime.IPath;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    10
import org.eclipse.jface.action.Action;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    11
import org.eclipse.jface.action.IAction;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    12
import org.eclipse.jface.action.IToolBarManager;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    13
import org.eclipse.jface.viewers.ISelection;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    14
import org.eclipse.jface.viewers.ISelectionChangedListener;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    15
import org.eclipse.jface.viewers.ISelectionProvider;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    16
import org.eclipse.jface.viewers.StructuredSelection;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    17
import org.eclipse.swt.browser.Browser;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    18
import org.eclipse.swt.layout.GridData;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    19
import org.eclipse.swt.widgets.Composite;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    20
import org.eclipse.swt.widgets.Control;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    21
import org.eclipse.ui.actions.ActionFactory;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    22
import org.eclipse.ui.part.IPageSite;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    23
import org.eclipse.ui.part.Page;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    24
import org.symbian.tools.tmw.core.utilities.CoreUtil;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    25
import org.symbian.tools.tmw.previewer.Images;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    26
import org.symbian.tools.tmw.previewer.PreviewerPlugin;
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    27
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    28
public abstract class AbstractPreviewPage extends Page implements IPreviewPage, ISelectionProvider {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    29
    private final IAction refreshAction = new Action("Refresh") {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    30
        public void run() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    31
            refresh(true);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    32
        };
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    33
    };
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    34
    private final IAction toggleRefresh = new Action("Toggle Refresh", IAction.AS_RADIO_BUTTON) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    35
        public void run() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    36
            toggleRefresh();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    37
        };
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    38
    };
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    39
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    40
    protected IProject project;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    41
    private Browser browser;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    42
    private boolean toggleState = true;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    43
    private final PreviewView previewView;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    44
    private boolean needsRefresh = false;
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    45
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    46
    public AbstractPreviewPage(IProject project, PreviewView previewView) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    47
        this.project = project;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    48
        this.previewView = previewView;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    49
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    50
483
109da596fa9d Fixed relevant FindBug messages
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 480
diff changeset
    51
    protected synchronized void toggleRefresh() {
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    52
        toggleState = !toggleState;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    53
        toggleRefresh.setChecked(toggleState);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    54
        previewView.setProjectAutorefresh(project, toggleState);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    55
        toggleRefresh.setToolTipText(getToggleActionTooltip());
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    56
        if (toggleState && needsRefresh) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    57
            refresh(true);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    58
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    59
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    60
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    61
    @Override
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    62
    public void createControl(Composite parent) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    63
        browser = createBrowser(parent);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    64
        browser.setLayoutData(new GridData(GridData.FILL_BOTH));
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    65
        browser.setUrl(getURI().toASCIIString());
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    66
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    67
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    68
    protected abstract Browser createBrowser(Composite parent);
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    69
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    70
    private URI getURI() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    71
        return PreviewerPlugin.getDefault().getHttpPreviewer().previewProject(project, null);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    72
    }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    73
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    74
    @Override
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    75
    public Control getControl() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    76
        return browser;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    77
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    78
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    79
    @Override
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    80
    public void setFocus() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    81
        if (browser != null && !browser.isDisposed()) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    82
            browser.setFocus();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    83
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    84
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    85
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    86
    private boolean refreshScheduled = false;
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    87
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    88
    public synchronized void process(Collection<IFile> files) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    89
        if (!isDisposed() && !refreshScheduled && needsRefresh(files)) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    90
            asyncExec(new Runnable() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    91
                public void run() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    92
                    refreshBrowser();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    93
                }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    94
            });
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    95
            refreshScheduled = true;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    96
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    97
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    98
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    99
    protected void promptIfNeeded() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   100
        if (toggleState) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   101
            toggleState = previewView.promptUserToToggle(project, toggleState);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   102
            toggleRefresh.setChecked(toggleState);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   103
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   104
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   105
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   106
    private void asyncExec(Runnable runnable) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   107
        getControl().getDisplay().asyncExec(runnable);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   108
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   109
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   110
    private boolean needsRefresh(Collection<IFile> files) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   111
        for (IFile iFile : files) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   112
            if (iFile.getProject().equals(project)) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   113
                return true;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   114
            }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   115
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   116
        return false;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   117
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   118
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   119
    protected synchronized void refresh(final boolean manual) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   120
        try {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   121
            if (!isDisposed()) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   122
                final Control focusControl = browser.getDisplay().getFocusControl();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   123
                if (manual && CoreUtil.isMac()) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   124
                    browser.getParent().forceFocus();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   125
                }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   126
                browser.setUrl(getURI().toASCIIString());
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   127
                refreshAction.setImageDescriptor(PreviewerPlugin.getImageDescriptor(Images.GREEN_SYNC));
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   128
                asyncExec(new Runnable() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   129
                    public void run() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   130
                        if (!manual && focusControl != null && !focusControl.isDisposed()) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   131
                            focusControl.setFocus();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   132
                        } else if (manual) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   133
                            browser.forceFocus();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   134
                        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   135
                    }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   136
                });
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   137
                refreshAction.setToolTipText("Refresh the preview browser");
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   138
            }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   139
            needsRefresh = false;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   140
        } finally {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   141
            refreshScheduled = false;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   142
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   143
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   144
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   145
    @Override
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   146
    public void init(IPageSite pageSite) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   147
        super.init(pageSite);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   148
        IToolBarManager toolBar = pageSite.getActionBars().getToolBarManager();
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   149
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   150
        contributeToToolbar(toolBar);
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   151
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   152
        refreshAction.setImageDescriptor(PreviewerPlugin.getImageDescriptor(Images.GREEN_SYNC));
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   153
        refreshAction.setToolTipText("Refresh the preview browser");
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   154
        toolBar.add(refreshAction);
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   155
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   156
        toggleState = previewView.getProjectAutorefresh(project);
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   157
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   158
        toggleRefresh.setImageDescriptor(PreviewerPlugin.getImageDescriptor(Images.YELLOW_SYNC));
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   159
        toggleRefresh.setToolTipText(getToggleActionTooltip());
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   160
        toggleRefresh.setChecked(toggleState);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   161
        toolBar.add(toggleRefresh);
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   162
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   163
        pageSite.getActionBars().setGlobalActionHandler(ActionFactory.REFRESH.getId(), refreshAction);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   164
        getSite().setSelectionProvider(this);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   165
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   166
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   167
    protected void contributeToToolbar(IToolBarManager toolBar) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   168
        // Do nothing here
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   169
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   170
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   171
    private String getToggleActionTooltip() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   172
        return toggleState ? "Disable preview autorefresh" : "Enable preview autorefresh";
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   173
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   174
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   175
    public void addSelectionChangedListener(ISelectionChangedListener listener) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   176
        // Do nothing
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   177
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   178
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   179
    public ISelection getSelection() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   180
        return new StructuredSelection(project);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   181
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   182
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   183
    public void removeSelectionChangedListener(ISelectionChangedListener listener) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   184
        // Do nothing
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   185
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   186
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   187
    public void setSelection(ISelection selection) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   188
        // Do nothing
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   189
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   190
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   191
    public boolean isDisposed() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   192
        return browser != null && browser.isDisposed();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   193
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   194
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   195
    private synchronized void refreshBrowser() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   196
        if (toggleState) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   197
            promptIfNeeded();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   198
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   199
        if (toggleState) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   200
            refresh(false);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   201
        } else {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   202
            needsRefresh = true;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   203
            refreshAction.setImageDescriptor(PreviewerPlugin.getImageDescriptor(Images.RED_SYNC));
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   204
            refreshAction.setToolTipText("Refresh the preview browser (there are updated files)");
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   205
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   206
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   207
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   208
    public IProject getProject() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   209
        return project;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   210
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   211
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   212
    public synchronized void projectRenamed(IPath newPath) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   213
        if (!isDisposed()) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   214
            project = ResourcesPlugin.getWorkspace().getRoot().getProject(newPath.lastSegment());
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   215
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   216
    }
470
d4809db37847 Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   217
}