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 16:31:16 -0700
changeset 485 df4f55e8569e
parent 484 f5df819c1852
permissions -rw-r--r--
Fixed copyright headers and removed unneeded WRT mentions from TMW code
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
485
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
     1
/*******************************************************************************
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
     2
 * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies).
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
     3
 * All rights reserved.
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
     4
 * This component and the accompanying materials are made available
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
     5
 * under the terms of the License "Eclipse Public License v1.0"
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
     6
 * which accompanies this distribution, and is available
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
     8
 *
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
     9
 * Initial Contributors:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
    10
 * Symbian Foundation - initial contribution.
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
    11
 * Contributors:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
    12
 * Description:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
    13
 * Overview:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
    14
 * Details:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
    15
 * Platforms/Drives/Compatibility:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
    16
 * Assumptions/Requirement/Pre-requisites:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
    17
 * Failures and causes:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 484
diff changeset
    18
 *******************************************************************************/
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
    19
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
    20
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 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
    22
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
    23
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.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
    25
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
    26
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
    27
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
    28
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
    29
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
    30
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
    31
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
    32
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
    33
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
    34
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
    35
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
    36
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
    37
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
    38
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
    39
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
    40
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
    41
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
    42
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
    43
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
    44
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
    45
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    46
public abstract class AbstractPreviewPage extends Page implements IPreviewPage, ISelectionProvider {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    47
    private final IAction refreshAction = new Action("Refresh") {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    48
        public void run() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    49
            refresh(true);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    50
        };
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    51
    };
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    52
    private final IAction toggleRefresh = new Action("Toggle Refresh", IAction.AS_RADIO_BUTTON) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    53
        public void run() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    54
            toggleRefresh();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    55
        };
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    56
    };
484
f5df819c1852 Checkstyle was used to review coding conventions
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
    57
    private IProject project;
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    58
    private Browser browser;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    59
    private boolean toggleState = true;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    60
    private final PreviewView previewView;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    61
    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
    62
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    63
    public AbstractPreviewPage(IProject project, PreviewView previewView) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    64
        this.project = project;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    65
        this.previewView = previewView;
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
483
109da596fa9d Fixed relevant FindBug messages
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 480
diff changeset
    68
    protected synchronized void toggleRefresh() {
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    69
        toggleState = !toggleState;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    70
        toggleRefresh.setChecked(toggleState);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    71
        previewView.setProjectAutorefresh(project, toggleState);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    72
        toggleRefresh.setToolTipText(getToggleActionTooltip());
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    73
        if (toggleState && needsRefresh) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    74
            refresh(true);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    75
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    76
    }
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
    77
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    78
    @Override
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    79
    public void createControl(Composite parent) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    80
        browser = createBrowser(parent);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    81
        browser.setLayoutData(new GridData(GridData.FILL_BOTH));
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    82
        browser.setUrl(getURI().toASCIIString());
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    83
    }
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
    84
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    85
    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
    86
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    87
    private URI getURI() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    88
        return PreviewerPlugin.getDefault().getHttpPreviewer().previewProject(project, null);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    89
    }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    90
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    91
    @Override
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    92
    public Control getControl() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    93
        return browser;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    94
    }
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
    95
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    96
    @Override
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    97
    public void setFocus() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    98
        if (browser != null && !browser.isDisposed()) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
    99
            browser.setFocus();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   100
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   101
    }
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
   102
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   103
    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
   104
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   105
    public synchronized void process(Collection<IFile> files) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   106
        if (!isDisposed() && !refreshScheduled && needsRefresh(files)) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   107
            asyncExec(new Runnable() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   108
                public void run() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   109
                    refreshBrowser();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   110
                }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   111
            });
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   112
            refreshScheduled = true;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   113
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   114
    }
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
   115
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   116
    protected void promptIfNeeded() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   117
        if (toggleState) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   118
            toggleState = previewView.promptUserToToggle(project, toggleState);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   119
            toggleRefresh.setChecked(toggleState);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   120
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   121
    }
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
   122
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   123
    private void asyncExec(Runnable runnable) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   124
        getControl().getDisplay().asyncExec(runnable);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   125
    }
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
   126
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   127
    private boolean needsRefresh(Collection<IFile> files) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   128
        for (IFile iFile : files) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   129
            if (iFile.getProject().equals(project)) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   130
                return true;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   131
            }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   132
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   133
        return false;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   134
    }
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
   135
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   136
    protected synchronized void refresh(final boolean manual) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   137
        try {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   138
            if (!isDisposed()) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   139
                final Control focusControl = browser.getDisplay().getFocusControl();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   140
                if (manual && CoreUtil.isMac()) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   141
                    browser.getParent().forceFocus();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   142
                }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   143
                browser.setUrl(getURI().toASCIIString());
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   144
                refreshAction.setImageDescriptor(PreviewerPlugin.getImageDescriptor(Images.GREEN_SYNC));
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   145
                asyncExec(new Runnable() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   146
                    public void run() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   147
                        if (!manual && focusControl != null && !focusControl.isDisposed()) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   148
                            focusControl.setFocus();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   149
                        } else if (manual) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   150
                            browser.forceFocus();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   151
                        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   152
                    }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   153
                });
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   154
                refreshAction.setToolTipText("Refresh the preview browser");
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   155
            }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   156
            needsRefresh = false;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   157
        } finally {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   158
            refreshScheduled = false;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   159
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   160
    }
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
   161
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   162
    @Override
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   163
    public void init(IPageSite pageSite) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   164
        super.init(pageSite);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   165
        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
   166
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   167
        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
   168
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   169
        refreshAction.setImageDescriptor(PreviewerPlugin.getImageDescriptor(Images.GREEN_SYNC));
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   170
        refreshAction.setToolTipText("Refresh the preview browser");
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   171
        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
   172
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   173
        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
   174
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   175
        toggleRefresh.setImageDescriptor(PreviewerPlugin.getImageDescriptor(Images.YELLOW_SYNC));
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   176
        toggleRefresh.setToolTipText(getToggleActionTooltip());
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   177
        toggleRefresh.setChecked(toggleState);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   178
        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
   179
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   180
        pageSite.getActionBars().setGlobalActionHandler(ActionFactory.REFRESH.getId(), refreshAction);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   181
        getSite().setSelectionProvider(this);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   182
    }
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
   183
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   184
    protected void contributeToToolbar(IToolBarManager toolBar) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   185
        // Do nothing here
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   186
    }
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
   187
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   188
    private String getToggleActionTooltip() {
484
f5df819c1852 Checkstyle was used to review coding conventions
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
   189
        if (toggleState) {
f5df819c1852 Checkstyle was used to review coding conventions
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
   190
            return "Disable preview autorefresh";
f5df819c1852 Checkstyle was used to review coding conventions
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
   191
        } else {
f5df819c1852 Checkstyle was used to review coding conventions
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
   192
            return "Enable preview autorefresh";
f5df819c1852 Checkstyle was used to review coding conventions
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
   193
        }
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   194
    }
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
   195
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   196
    public void addSelectionChangedListener(ISelectionChangedListener listener) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   197
        // Do nothing
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   198
    }
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
   199
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   200
    public ISelection getSelection() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   201
        return new StructuredSelection(project);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   202
    }
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
   203
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   204
    public void removeSelectionChangedListener(ISelectionChangedListener listener) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   205
        // Do nothing
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 void setSelection(ISelection selection) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   209
        // Do nothing
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 boolean isDisposed() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   213
        return browser != null && browser.isDisposed();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   214
    }
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
   215
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   216
    private synchronized void refreshBrowser() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   217
        if (toggleState) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   218
            promptIfNeeded();
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   219
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   220
        if (toggleState) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   221
            refresh(false);
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   222
        } else {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   223
            needsRefresh = true;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   224
            refreshAction.setImageDescriptor(PreviewerPlugin.getImageDescriptor(Images.RED_SYNC));
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   225
            refreshAction.setToolTipText("Refresh the preview browser (there are updated files)");
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   226
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   227
    }
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
   228
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   229
    public IProject getProject() {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   230
        return project;
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   231
    }
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
   232
480
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   233
    public synchronized void projectRenamed(IPath newPath) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   234
        if (!isDisposed()) {
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   235
            project = ResourcesPlugin.getWorkspace().getRoot().getProject(newPath.lastSegment());
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   236
        }
b6d992b9b998 Bugfixes
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 470
diff changeset
   237
    }
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
   238
}