Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Console.java')
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Console.java429
1 files changed, 0 insertions, 429 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Console.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Console.java
deleted file mode 100644
index 189f4633f..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Console.java
+++ /dev/null
@@ -1,429 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial implementation
- ******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceConverter;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.custom.LineStyleEvent;
-import org.eclipse.swt.custom.LineStyleListener;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSStatus;
-import org.eclipse.team.internal.ccvs.core.client.listeners.IConsoleListener;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.texteditor.ITextEditorActionConstants;
-
-/**
- * Console is a view that displays the communication with the CVS server
- */
-public class Console extends ViewPart {
- public static final String CONSOLE_ID = "org.eclipse.team.ccvs.ui.console"; //$NON-NLS-1$
- private static final DateFormat TIME_FORMAT = new SimpleDateFormat(Policy.bind("Console.resultTimeFormat")); //$NON-NLS-1$
- private static ConsoleDocument document;
- private static List /* of Console */ instances;
-
- private TextViewer viewer;
- private Color commandColor;
- private Color messageColor;
- private Color errorColor;
- private Font consoleFont;
-
- private IDocumentListener documentListener;
- private IPropertyChangeListener propertyChangeListener;
- private TextViewerAction copyAction;
- private TextViewerAction selectAllAction;
- private Action clearOutputAction;
-
- /*
- * Called on UI plugin startup.
- */
- public static void startup() {
- document = new ConsoleDocument();
- instances = new ArrayList();
- CVSProviderPlugin.getPlugin().setConsoleListener(new ConsoleListener());
- }
-
- /*
- * Called on UI plugin shutdown.
- */
- public static void shutdown() {
- document = null;
- instances = null;
- CVSProviderPlugin.getPlugin().setConsoleListener(null);
- }
-
- public Console() {
- }
-
- /*
- * @see WorkbenchPart#dispose
- */
- public void dispose() {
- // remove listeners
- if (documentListener != null) {
- document.removeDocumentListener(documentListener);
- documentListener = null;
- }
- if (propertyChangeListener != null) {
- getPreferenceStore().removePropertyChangeListener(propertyChangeListener);
- propertyChangeListener = null;
- }
- instances.remove(this);
- //if (instances.isEmpty()) document.clear();
-
- // dispose of allocated colors and fonts
- super.dispose();
- if (commandColor != null) {
- commandColor.dispose();
- commandColor = null;
- }
- if (messageColor != null) {
- messageColor.dispose();
- messageColor = null;
- }
- if (errorColor != null) {
- errorColor.dispose();
- errorColor = null;
- }
- if (consoleFont != null) {
- consoleFont.dispose();
- consoleFont = null;
- }
- }
-
- /*
- * @see WorkbenchPart#setFocus()
- */
- public void setFocus() {
- viewer.getTextWidget().setFocus();
- }
-
- /*
- * @see WorkbenchPart#createPartControl(Composite)
- */
- public void createPartControl(Composite parent) {
- Composite composite = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
-
- updatePreferences(null);
-
- // F1 Help
- WorkbenchHelp.setHelp(composite, IHelpContextIds.CONSOLE_VIEW);
-
- // create the viewer
- viewer = new TextViewer(composite, SWT.V_SCROLL | SWT.H_SCROLL);
- GridData data = new GridData(GridData.FILL_BOTH);
- viewer.getControl().setLayoutData(data);
- viewer.setEditable(false);
- viewer.setDocument(document);
- viewer.getTextWidget().setFont(consoleFont);
-
- // add a selection listener to control enablement of the copy action
- viewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- copyAction.update();
- }
- });
-
- // add a line styler for colouring lines according to their type
- viewer.getTextWidget().addLineStyleListener(new LineStyleListener() {
- public void lineGetStyle(LineStyleEvent event) {
- StyleRange style = new StyleRange(event.lineOffset, event.lineText.length(),
- getConsoleLineColor(event.lineOffset), null);
- event.styles = new StyleRange[] { style };
- }
- });
-
- // create the viewer actions
- createActions();
-
- // add a property change listener to update when preferences change
- propertyChangeListener = new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- updatePreferences(event.getProperty());
- }
- };
- getPreferenceStore().addPropertyChangeListener(propertyChangeListener);
-
- // add a document listener for auto-scrolling
- documentListener = new IDocumentListener() {
- public void documentAboutToBeChanged(DocumentEvent event) {
- }
- public void documentChanged(DocumentEvent event) {
- if (viewer == null) return;
- // always focus on the last line without changing the horizontal scrolling index
- // we can get away with doing it this way because the viewer is read only
- StyledText styledText = viewer.getTextWidget();
- if (styledText.isDisposed()) return;
- styledText.setTopIndex(styledText.getLineCount());
- }
- };
- document.addDocumentListener(documentListener);
-
- // we're open -- remember us
- instances.add(this);
- }
-
- /**
- * Create contributed actions
- */
- private void createActions() {
- clearOutputAction = new Action(Policy.bind("Console.clearOutput"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_CLEAR)) { //$NON-NLS-1$
- public void run() {
- document.clear();
- }
- };
- clearOutputAction.setToolTipText(Policy.bind("Console.clearOutput")); //$NON-NLS-1$
-
- MenuManager mgr = new MenuManager();
- mgr.setRemoveAllWhenShown(true);
- mgr.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager mgr) {
- fillContextMenu(mgr);
- }
- });
- Menu menu = mgr.createContextMenu(viewer.getControl());
- viewer.getControl().setMenu(menu);
-
- // Create the local tool bar
- IToolBarManager tbm = getViewSite().getActionBars().getToolBarManager();
- tbm.add(clearOutputAction);
- tbm.update(false);
-
-
- // Create actions for the text editor
- IActionBars actionBars = getViewSite().getActionBars();
-
- copyAction = new TextViewerAction(viewer, ITextOperationTarget.COPY);
- copyAction.setText(Policy.bind("Console.copy")); //$NON-NLS-1$
- actionBars.setGlobalActionHandler(ITextEditorActionConstants.COPY, copyAction);
-
- selectAllAction = new TextViewerAction(viewer, ITextOperationTarget.SELECT_ALL);
- selectAllAction.setText(Policy.bind("Console.selectAll")); //$NON-NLS-1$
- actionBars.setGlobalActionHandler(ITextEditorActionConstants.SELECT_ALL, selectAllAction);
-
- actionBars.updateActionBars();
- }
-
- /**
- * Add the actions to the context menu
- *
- * @param manager the manager of the context menu
- */
- private void fillContextMenu(IMenuManager manager) {
- manager.add(copyAction);
- manager.add(selectAllAction);
- manager.add(new Separator());
- manager.add(clearOutputAction);
- }
-
- /**
- * Returns the color for the line containing the specified offset.
- */
- private Color getConsoleLineColor(int offset) {
- switch (document.getLineType(offset)) {
- case ConsoleDocument.COMMAND:
- case ConsoleDocument.STATUS:
- case ConsoleDocument.DELIMITER:
- return commandColor;
- case ConsoleDocument.MESSAGE:
- return messageColor;
- case ConsoleDocument.ERROR:
- return errorColor;
- default:
- throw new IllegalStateException();
- }
- }
-
- /**
- * Updates the console's font and colors.
- */
- private void updatePreferences(String property) {
- Display display = getViewSite().getShell().getDisplay();
- // update the console colors
- if (property == null ||
- property.equals(ICVSUIConstants.PREF_CONSOLE_COMMAND_COLOR) ||
- property.equals(ICVSUIConstants.PREF_CONSOLE_MESSAGE_COLOR) ||
- property.equals(ICVSUIConstants.PREF_CONSOLE_ERROR_COLOR)) {
- Color oldCommandColor = commandColor;
- Color oldMessageColor = messageColor;
- Color oldErrorColor = errorColor;
- commandColor = createColor(display, ICVSUIConstants.PREF_CONSOLE_COMMAND_COLOR);
- messageColor = createColor(display, ICVSUIConstants.PREF_CONSOLE_MESSAGE_COLOR);
- errorColor = createColor(display, ICVSUIConstants.PREF_CONSOLE_ERROR_COLOR);
- if (oldCommandColor != null) {
- if (viewer != null && ! viewer.getControl().isDisposed()) {
- viewer.refresh();
- }
- oldCommandColor.dispose();
- oldMessageColor.dispose();
- oldErrorColor.dispose();
- }
- }
- // update the console font
- if (property == null ||
- property.equals(ICVSUIConstants.PREF_CONSOLE_FONT)) {
- Font oldConsoleFont = consoleFont;
- consoleFont = createFont(display, ICVSUIConstants.PREF_CONSOLE_FONT);
- if (oldConsoleFont != null) {
- if (viewer != null && ! viewer.getControl().isDisposed()) {
- viewer.getTextWidget().setFont(consoleFont);
- }
- oldConsoleFont.dispose();
- }
- }
- }
-
- /**
- * Returns a color instance based on data from a preference field.
- */
- private Color createColor(Display display, String preference) {
- RGB rgb = PreferenceConverter.getColor(getPreferenceStore(), preference);
- return new Color(display, rgb);
- }
-
- /**
- * Returns a font instance based on data from a preference field.
- */
- private Font createFont(Display display, String preference) {
- FontData fontData = PreferenceConverter.getFontData(getPreferenceStore(), preference);
- return new Font(display, fontData);
- }
-
- /**
- * Appends a line to the console if any views are open.
- */
- private static void appendConsoleLine(final int type, final String line) {
- Display display = Display.getCurrent();
- if (display == null) {
- display = Display.getDefault();
- }
- display.asyncExec(new Runnable() {
- public void run() {
- if (getPreferenceStore().getBoolean(ICVSUIConstants.PREF_CONSOLE_AUTO_OPEN)) {
- findInActivePerspective();
- }
- if (document == null) return;
- document.appendConsoleLine(type, line, instances.isEmpty());
- }
- });
- }
-
- /**
- * Makes the CVS Console view visible in the active perspective. If there
- * isn't a CVS Console view registered <code>null</code> is returned.
- * Otherwise the opened view part is returned.
- *
- * Must be called from the UI thread.
- */
- private static Console findInActivePerspective() {
- try {
- IWorkbenchPage page = CVSUIPlugin.getActivePage();
- IViewPart consolePart = page.findView(CONSOLE_ID);
- if (consolePart == null) {
- IWorkbenchPart activePart = page.getActivePart();
- consolePart = page.showView(CONSOLE_ID);
- //restore focus stolen by the creation of the console
- if (activePart != null) page.activate(activePart);
- } else {
- page.bringToTop(consolePart);
- }
- return (Console) consolePart;
- } catch (PartInitException pe) {
- return null;
- }
- }
-
- /**
- * Returns the console preference store.
- */
- private static IPreferenceStore getPreferenceStore() {
- return CVSUIPlugin.getPlugin().getPreferenceStore();
- }
-
- private static class ConsoleListener implements IConsoleListener {
- private long commandStarted = 0;
-
- public void commandInvoked(String line) {
- commandStarted = System.currentTimeMillis();
- appendConsoleLine(ConsoleDocument.DELIMITER, Policy.bind("Console.preExecutionDelimiter")); //$NON-NLS-1$
- appendConsoleLine(ConsoleDocument.COMMAND, line);
- }
- public void messageLineReceived(String line) {
- appendConsoleLine(ConsoleDocument.MESSAGE, " " + line); //$NON-NLS-1$
- }
- public void errorLineReceived(String line) {
- appendConsoleLine(ConsoleDocument.ERROR, " " + line); //$NON-NLS-1$
- }
- public void commandCompleted(IStatus status, Exception exception) {
- long commandRuntime = System.currentTimeMillis() - commandStarted;
- String time = TIME_FORMAT.format(new Date(commandRuntime));
- String statusText;
- if (status != null && status.getCode() == CVSStatus.SERVER_ERROR) {
- statusText = Policy.bind("Console.resultServerError", time); //$NON-NLS-1$
- } else if (exception != null) {
- if (exception instanceof OperationCanceledException) {
- statusText = Policy.bind("Console.resultAborted", time); //$NON-NLS-1$
- } else {
- statusText = Policy.bind("Console.resultException", time); //$NON-NLS-1$
- }
- } else {
- statusText = Policy.bind("Console.resultOk", time); //$NON-NLS-1$
- }
- appendConsoleLine(ConsoleDocument.STATUS, statusText);
- appendConsoleLine(ConsoleDocument.DELIMITER, Policy.bind("Console.postExecutionDelimiter")); //$NON-NLS-1$
- appendConsoleLine(ConsoleDocument.DELIMITER, ""); //$NON-NLS-1$
- }
- }
-}

Back to the top