blob: 5a09c9d1af9e47ae48e524601d2fc6f2a97f3e63 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* EclipseSource Corporation - ongoing enhancements
*******************************************************************************/
package org.eclipse.pde.internal.ua.ui.editor.cheatsheet;
import org.eclipse.jface.action.ControlContribution;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.pde.core.IModel;
import org.eclipse.pde.internal.core.WorkspaceModelManager;
import org.eclipse.pde.internal.ua.ui.PDEUserAssistanceUIPlugin;
import org.eclipse.pde.internal.ua.ui.wizards.cheatsheet.RegisterCSWizard;
import org.eclipse.pde.internal.ui.editor.MultiSourceEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.events.IHyperlinkListener;
import org.eclipse.ui.forms.widgets.ImageHyperlink;
public abstract class CSAbstractEditor extends MultiSourceEditor {
private ImageHyperlink fImageHyperlinkRegisterCS;
public void contributeToToolbar(IToolBarManager manager) {
// Add the register cheat sheet link to the form title area
if (WorkspaceModelManager.isPluginProject(getCommonProject())
&& getAggregateModel().isEditable())
manager.add(createUIControlConRegisterCS());
}
/**
* @return
*/
private ControlContribution createUIControlConRegisterCS() {
return new ControlContribution("Register") { //$NON-NLS-1$
protected Control createControl(Composite parent) {
// Create UI
createUIImageHyperlinkRegisterCS(parent);
// Create Listener
createUIListenerImageHyperlinkRegisterCS();
return fImageHyperlinkRegisterCS;
}
};
}
/**
* @param parent
*/
private void createUIImageHyperlinkRegisterCS(Composite parent) {
fImageHyperlinkRegisterCS = new ImageHyperlink(parent, SWT.NONE);
fImageHyperlinkRegisterCS.setText(Messages.CSAbstractEditor_register);
fImageHyperlinkRegisterCS.setUnderlined(true);
fImageHyperlinkRegisterCS.setForeground(getToolkit()
.getHyperlinkGroup().getForeground());
}
/**
*
*/
private void createUIListenerImageHyperlinkRegisterCS() {
fImageHyperlinkRegisterCS
.addHyperlinkListener(new IHyperlinkListener() {
public void linkActivated(HyperlinkEvent e) {
handleLinkActivatedRegisterCS();
}
public void linkEntered(HyperlinkEvent e) {
handleLinkEnteredRegisterCS(e.getLabel());
}
public void linkExited(HyperlinkEvent e) {
handleLinkExitedRegisterCS();
}
});
}
/**
* @param message
*/
private void handleLinkEnteredRegisterCS(String message) {
// Update colour
fImageHyperlinkRegisterCS.setForeground(getToolkit()
.getHyperlinkGroup().getActiveForeground());
// Update IDE status line
getEditorSite().getActionBars().getStatusLineManager().setMessage(
message);
}
/**
*
*/
private void handleLinkExitedRegisterCS() {
// Update colour
fImageHyperlinkRegisterCS.setForeground(getToolkit()
.getHyperlinkGroup().getForeground());
// Update IDE status line
getEditorSite().getActionBars().getStatusLineManager().setMessage(null);
}
/**
*
*/
private void handleLinkActivatedRegisterCS() {
RegisterCSWizard wizard = new RegisterCSWizard(
(IModel) getAggregateModel());
// Initialize the wizard
wizard.init(PlatformUI.getWorkbench(), null);
// Create the dialog for the wizard
WizardDialog dialog = new WizardDialog(PDEUserAssistanceUIPlugin
.getActiveWorkbenchShell(), wizard);
dialog.create();
// Configure the dialogs size
dialog.getShell().setSize(400, 370);
// Check the result
if (dialog.open() == Window.OK) {
// TODO: MP: COMPCS: HIGH: Automatic save of editor after creating
// simple cheat sheet?
}
}
}