/***************************************************************************** * Copyright (c) 2006, 2007 g-Eclipse Consortium * 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 * * Initial development of the original code was made for the * g-Eclipse project founded by European Union * project number: FP6-IST-034327 http://www.geclipse.eu/ * * Contributors: * Thomas Koeckerbauer GUP, JKU - initial API and implementation *****************************************************************************/ package eu.geclipse.terminal.internal; import java.io.IOException; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.themes.IThemeManager; import eu.geclipse.core.IBidirectionalConnection; import eu.geclipse.terminal.ITerminalListener; import eu.geclipse.terminal.ITerminalPage; import eu.geclipse.terminal.internal.preferences.PreferenceConstants; class TerminalPage extends Composite implements ITerminalPage { private static final String fgColorThemeEntry = "eu.geclipse.terminal.ForgroundColor"; //$NON-NLS-1$ private static final String bgColorThemeEntry = "eu.geclipse.terminal.BackgroundColor"; //$NON-NLS-1$ private static final String fontTextEntry = "eu.geclipse.terminal.TextFont"; //$NON-NLS-1$ Label descLabel = null; CTabItem tabItem; private Terminal terminal; private IBidirectionalConnection connection; TerminalPage( final Composite parent, final int style, final CTabItem cTabItem ) { super( parent, style ); this.tabItem = cTabItem; createPartControl(); } void copy() { this.terminal.copy(); } void paste() { this.terminal.paste(); } /* (non-Javadoc) * @see eu.geclipse.terminal.views.ITerminalPage#setTabName(java.lang.String) */ public void setTabName( final String name ) { Display.getDefault().syncExec(new Runnable() { public void run () { TerminalPage.this.tabItem.setText( name ); } }); } /* (non-Javadoc) * @see eu.geclipse.terminal.views.ITerminalPage#getTabName() */ public String getTabName() { return this.tabItem.getText(); } /* (non-Javadoc) * @see eu.geclipse.terminal.views.ITerminalPage#setDescription(java.lang.String) */ public void setDescription( final String desc ) { Display.getDefault().syncExec( new Runnable() { public void run () { TerminalPage.this.descLabel.setText( desc ); } } ); } /* (non-Javadoc) * @see eu.geclipse.terminal.views.ITerminalPage#getDescription() */ public String getDescription() { return this.descLabel.getText(); } /* (non-Javadoc) * @see eu.geclipse.terminal.views.ITerminalPage#setFont(org.eclipse.swt.graphics.Font) */ @Override public void setFont( final Font font ) { this.terminal.setFont( font ); } /* (non-Javadoc) * @see eu.geclipse.terminal.views.ITerminalPage#getFont() */ @Override public Font getFont() { return this.terminal.getFont(); } void setConnection( final IBidirectionalConnection conn ) throws IOException { this.connection = conn; this.terminal.setInputStream( this.connection.getInputStream() ); this.terminal.setOutputStream( this.connection.getOutputStream() ); } void addTerminalListener( final ITerminalListener termListener ) { this.terminal.addTerminalListener( termListener ); } void closeConnection() { this.connection.close(); } private void createPartControl() { GridLayout gridLayout = new GridLayout(); gridLayout.horizontalSpacing = 0; gridLayout.marginWidth = 0; gridLayout.marginHeight = 0; gridLayout.verticalSpacing = 0; GridData labelGridData = new GridData(); labelGridData.horizontalAlignment = GridData.FILL; labelGridData.grabExcessHorizontalSpace = true; labelGridData.verticalAlignment = GridData.CENTER; this.descLabel = new Label( this, SWT.NONE ); this.descLabel.setText( Messages.getString( "TerminalPage.noDescription" ) ); //$NON-NLS-1$ this.descLabel.setLayoutData( labelGridData ); GridData terminalGridData = new GridData(); terminalGridData.horizontalAlignment = GridData.FILL; terminalGridData.grabExcessHorizontalSpace = true; terminalGridData.grabExcessVerticalSpace = true; terminalGridData.verticalAlignment = GridData.FILL; IThemeManager themeManager = Activator.getDefault().getWorkbench().getThemeManager(); Color fgColor = themeManager.getCurrentTheme().getColorRegistry().get( fgColorThemeEntry ); Color bgColor = themeManager.getCurrentTheme().getColorRegistry().get( bgColorThemeEntry ); Font font = themeManager.getCurrentTheme().getFontRegistry().get( fontTextEntry ); IPreferenceStore store = Activator.getDefault().getPreferenceStore(); int historySize = store.getInt( PreferenceConstants.P_HISTORY_SIZE ); this.terminal = new Terminal( this, SWT.NONE, fgColor, bgColor, historySize ); this.terminal.setFont( font ); this.terminal.setLayoutData( terminalGridData ); this.tabItem.setText( Messages.getString( "TerminalPage.terminal" ) ); //$NON-NLS-1$ setLayout( gridLayout ); } Terminal getTerminal() { return this.terminal; } }