| /******************************************************************************* |
| * Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved. |
| * This program and the accompanying materials are made available under the |
| * terms of the Common Public License v1.0 which accompanies this distribution, |
| * and is available at http://www.eclipse.org/legal/cpl-v10.html |
| * |
| * Contributors: IBM Corporation - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.ui.internal.console; |
| |
| import org.eclipse.jface.action.IMenuManager; |
| import org.eclipse.jface.action.IToolBarManager; |
| import org.eclipse.jface.util.IPropertyChangeListener; |
| import org.eclipse.jface.util.PropertyChangeEvent; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.ui.actions.ActionFactory; |
| import org.eclipse.ui.console.IConsoleConstants; |
| import org.eclipse.ui.console.IConsoleView; |
| import org.eclipse.ui.console.TextConsole; |
| import org.eclipse.ui.console.TextConsolePage; |
| import org.eclipse.ui.console.TextConsoleViewer; |
| |
| /** |
| * A page for an IOConsole |
| * |
| * @since 3.1 |
| * |
| */ |
| public class IOConsolePage extends TextConsolePage { |
| |
| private ScrollLockAction fScrollLockAction; |
| |
| private boolean fReadOnly; |
| |
| private IPropertyChangeListener fPropertyChangeListener; |
| |
| public IOConsolePage(TextConsole console, IConsoleView view) { |
| super(console, view); |
| |
| fPropertyChangeListener = new IPropertyChangeListener() { |
| public void propertyChange(PropertyChangeEvent event) { |
| String property = event.getProperty(); |
| if (property.equals(IConsoleConstants.P_CONSOLE_OUTPUT_COMPLETE)) { |
| setReadOnly(); |
| } |
| } |
| }; |
| console.addPropertyChangeListener(fPropertyChangeListener); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.ui.part.IPage#createControl(org.eclipse.swt.widgets.Composite) |
| */ |
| public void createControl(Composite parent) { |
| super.createControl(parent); |
| if (fReadOnly) { |
| IOConsoleViewer viewer = (IOConsoleViewer) getViewer(); |
| viewer.setReadOnly(); |
| } |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.ui.console.TextConsolePage#createViewer(org.eclipse.swt.widgets.Composite, |
| * org.eclipse.ui.console.TextConsole) |
| */ |
| protected TextConsoleViewer createViewer(Composite parent) { |
| return new IOConsoleViewer(parent, (TextConsole)getConsole()); |
| } |
| |
| public void setAutoScroll(boolean scroll) { |
| IOConsoleViewer viewer = (IOConsoleViewer) getViewer(); |
| if (viewer != null) { |
| viewer.setAutoScroll(scroll); |
| } |
| } |
| |
| /** |
| * Informs the viewer that it's text widget should not be editable. |
| */ |
| public void setReadOnly() { |
| fReadOnly = true; |
| IOConsoleViewer viewer = (IOConsoleViewer) getViewer(); |
| if (viewer != null) { |
| viewer.setReadOnly(); |
| } |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.console.TextConsolePage#createActions() |
| */ |
| protected void createActions() { |
| super.createActions(); |
| fScrollLockAction = new ScrollLockAction(getConsoleView()); |
| setAutoScroll(!fScrollLockAction.isChecked()); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.console.TextConsolePage#contextMenuAboutToShow(org.eclipse.jface.action.IMenuManager) |
| */ |
| protected void contextMenuAboutToShow(IMenuManager menuManager) { |
| super.contextMenuAboutToShow(menuManager); |
| menuManager.add(fScrollLockAction); |
| IOConsoleViewer viewer = (IOConsoleViewer) getViewer(); |
| if (!viewer.isReadOnly()) { |
| menuManager.remove(ActionFactory.CUT.getId()); |
| menuManager.remove(ActionFactory.PASTE.getId()); |
| } |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.ui.console.TextConsolePage#configureToolBar(org.eclipse.jface.action.IToolBarManager) |
| */ |
| protected void configureToolBar(IToolBarManager mgr) { |
| super.configureToolBar(mgr); |
| mgr.appendToGroup(IConsoleConstants.OUTPUT_GROUP, fScrollLockAction); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.ui.part.IPage#dispose() |
| */ |
| public void dispose() { |
| if (fScrollLockAction != null) { |
| fScrollLockAction.dispose(); |
| fScrollLockAction = null; |
| } |
| getConsole().removePropertyChangeListener(fPropertyChangeListener); |
| super.dispose(); |
| } |
| } |