Java tutorial
/***************************************************************************** * 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; } }