Index: src/org/eclipse/tm/internal/terminal/view/ITerminalViewConnection.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/ITerminalViewConnection.java,v retrieving revision 1.1 diff -u -r1.1 ITerminalViewConnection.java --- src/org/eclipse/tm/internal/terminal/view/ITerminalViewConnection.java 7 Jul 2008 20:38:03 -0000 1.1 +++ src/org/eclipse/tm/internal/terminal/view/ITerminalViewConnection.java 20 Oct 2011 07:10:50 -0000 @@ -75,4 +75,13 @@ * @param summary */ void setSummary(String summary); + /** + * @param encoding the encoding of this connection + */ + void setEncoding(String encoding); + + /** + * @return the encoding of this connection + */ + String getEncoding(); } \ No newline at end of file Index: src/org/eclipse/tm/internal/terminal/view/TerminalSettingsDlg.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalSettingsDlg.java,v retrieving revision 1.15 diff -u -r1.15 TerminalSettingsDlg.java --- src/org/eclipse/tm/internal/terminal/view/TerminalSettingsDlg.java 9 Jul 2009 11:00:06 -0000 1.15 +++ src/org/eclipse/tm/internal/terminal/view/TerminalSettingsDlg.java 20 Oct 2011 07:10:51 -0000 @@ -22,6 +22,8 @@ *******************************************************************************/ package org.eclipse.tm.internal.terminal.view; +import java.nio.charset.Charset; +import java.nio.charset.IllegalCharsetNameException; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; @@ -51,6 +53,7 @@ import org.eclipse.ui.PlatformUI; class TerminalSettingsDlg extends Dialog { + private Combo fEncodingCombo; private Combo fCtlConnTypeCombo; private Text fTerminalTitleText; private final ITerminalConnector[] fConnectors; @@ -65,6 +68,7 @@ private IDialogSettings fDialogSettings; private String fTerminalTitle; private String fTitle=ViewMessages.TERMINALSETTINGS; + private String fEncoding; public TerminalSettingsDlg(Shell shell, ITerminalConnector[] connectors, ITerminalConnector connector) { super(shell); @@ -151,17 +155,18 @@ protected void okPressed() { if (!validateSettings()) { - String strTitle = ViewMessages.TERMINALSETTINGS; - MessageBox mb = new MessageBox(getShell(), SWT.ICON_ERROR | SWT.OK); - mb.setText(strTitle); - mb.setMessage(ViewMessages.INVALID_SETTINGS); - mb.open(); + showErrorMessage(ViewMessages.INVALID_SETTINGS); + return; + } + if (!updateValidState()) { + showErrorMessage(ViewMessages.ENCODING_NOT_AVAILABLE); return; } if(fSelectedConnector>=0) { getPage(fSelectedConnector).saveSettings(); } fTerminalTitle=fTerminalTitleText.getText(); + fEncoding = fEncodingCombo.getText(); super.okPressed(); } protected void cancelPressed() { @@ -202,6 +207,10 @@ fCtlConnTypeCombo.select(selectedConnector); selectPage(selectedConnector); } + doLoad(); + if (fEncoding != null) { + fEncodingCombo.setText(fEncoding); + } } /** * @return the connector to show when the dialog opens @@ -227,6 +236,7 @@ } private void setupPanel(Composite wndParent) { setupSettingsTypePanel(wndParent); + setupEncodingPanel(wndParent); if(fConnectors.length>0) { setupConnTypePanel(wndParent); setupSettingsGroup(wndParent); @@ -278,6 +288,25 @@ fPageBook=new PageBook(group,SWT.NONE); fPageBook.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); } + private void setupEncodingPanel(Composite wndParent) { + Group wndGroup; + GridLayout gridLayout; + GridData gridData; + + wndGroup = new Group(wndParent, SWT.NONE); + gridLayout = new GridLayout(1, true); + gridData = new GridData(GridData.FILL_HORIZONTAL); + + wndGroup.setLayout(gridLayout); + wndGroup.setLayoutData(gridData); + wndGroup.setText(ViewMessages.ENCODING); + + fEncodingCombo = new Combo(wndGroup, SWT.DROP_DOWN); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.widthHint = 200; + fEncodingCombo.setLayoutData(gridData); + + } private void setupListeners() { if(fCtlConnTypeCombo==null) return; @@ -331,4 +360,51 @@ public String getTerminalTitle() { return fTerminalTitle; } + private void doLoad() { + if (fEncodingCombo != null) { + List encodings = new ArrayList(); + encodings.add("ISO-8859-1"); //$NON-NLS-1$ + encodings.add("UTF-8"); //$NON-NLS-1$ + populateEncodingsCombo(encodings); + } + } + private void populateEncodingsCombo(List encodings) { + String[] encodingStrings = new String[encodings.size()]; + encodings.toArray(encodingStrings); + fEncodingCombo.setItems(encodingStrings); + } + private boolean isEncodingValid() { + return isValidEncoding(fEncodingCombo.getText()); + } + private boolean isValidEncoding(String enc) { + try { + return Charset.isSupported(enc); + } catch (IllegalCharsetNameException e) { + return false; + } + + } + private boolean updateValidState() { + boolean isValid = true; + boolean isValidNow = isEncodingValid(); + if (isValidNow != isValid) { + isValid = isValidNow; + } + return isValid; + } + private void showErrorMessage(String message) { + String strTitle = ViewMessages.TERMINALSETTINGS; + MessageBox mb = new MessageBox(getShell(), SWT.ICON_ERROR | SWT.OK); + mb.setText(strTitle); + mb.setMessage(message); + mb.open(); + return; + } + + public String getEncoding() { + return fEncoding; + } + public void setEncoding(String fEncoding) { + this.fEncoding = fEncoding; + } } Index: src/org/eclipse/tm/internal/terminal/view/TerminalView.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java,v retrieving revision 1.36 diff -u -r1.36 TerminalView.java --- src/org/eclipse/tm/internal/terminal/view/TerminalView.java 3 Jun 2010 08:33:02 -0000 1.36 +++ src/org/eclipse/tm/internal/terminal/view/TerminalView.java 20 Oct 2011 07:10:51 -0000 @@ -25,6 +25,7 @@ * Michael Scharf (Wind River) - [241096] Secondary terminals in same view do not observe the "invert colors" Preference * Michael Scharf (Wind River) - [262996] get rid of TerminalState.OPENED * Martin Oberhuber (Wind River) - [205486] Enable ScrollLock + * Ahmet Alptekih (Tubitak) - [244405] Add a UI Control for setting the Terminal's encoding *******************************************************************************/ package org.eclipse.tm.internal.terminal.view; @@ -351,6 +352,7 @@ c=fCtlTerminal.getTerminalConnector(); TerminalSettingsDlg dlgTerminalSettings = new TerminalSettingsDlg(getViewSite().getShell(),connectors,c); dlgTerminalSettings.setTerminalTitle(getActiveConnection().getPartName()); + dlgTerminalSettings.setEncoding(getActiveConnection().getEncoding()); if(title!=null) dlgTerminalSettings.setTitle(title); Logger.log("opening Settings dialog."); //$NON-NLS-1$ @@ -369,9 +371,15 @@ saveSettings(getPreferenceSettingsStore(), dlgTerminalSettings.getConnector()); setViewTitle(dlgTerminalSettings.getTerminalTitle()); + setEncoding(dlgTerminalSettings.getEncoding()); return dlgTerminalSettings.getConnector(); } - + + private void setEncoding(String encoding) { + getActiveConnection().setEncoding(encoding); + updateSummary(); + } + private void setConnector(ITerminalConnector connector) { fCtlTerminal.setConnector(connector); } Index: src/org/eclipse/tm/internal/terminal/view/TerminalViewConnection.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalViewConnection.java,v retrieving revision 1.6 diff -u -r1.6 TerminalViewConnection.java --- src/org/eclipse/tm/internal/terminal/view/TerminalViewConnection.java 25 Jan 2011 17:03:04 -0000 1.6 +++ src/org/eclipse/tm/internal/terminal/view/TerminalViewConnection.java 20 Oct 2011 07:10:51 -0000 @@ -13,6 +13,8 @@ *******************************************************************************/ package org.eclipse.tm.internal.terminal.view; +import java.io.UnsupportedEncodingException; + import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.dnd.DND; @@ -23,6 +25,7 @@ import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; +import org.eclipse.tm.internal.terminal.provisional.api.Logger; import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; /** @@ -36,14 +39,16 @@ private static final String STORE_CONNECTION_TYPE = "ConnectionType"; //$NON-NLS-1$ private static final String STORE_HAS_COMMAND_INPUT_FIELD = "HasCommandInputField"; //$NON-NLS-1$ private static final String STORE_COMMAND_INPUT_FIELD_HISTORY = "CommandInputFieldHistory"; //$NON-NLS-1$ - + private static final String STORE_ENCODING="Encoding"; //$NON-NLS-1$ + final private ITerminalViewControl fCtlTerminal; private String fTitle; private String fSummary; private String fHistory; private CommandInputFieldWithHistory fCommandInputField; private String fPartName; - + private String fEncoding; + public TerminalViewConnection(ITerminalViewControl ctl) { fCtlTerminal = ctl; fCtlTerminal.getControl().addMouseListener(new MouseAdapter(){ @@ -90,7 +95,7 @@ fPartName=store.get(STORE_PART_NAME); fSummary=store.get(STORE_SUMMARY); fHistory=store.get(STORE_COMMAND_INPUT_FIELD_HISTORY); - + fEncoding=store.get(STORE_ENCODING); // load the state of the connection types ITerminalConnector[] connectors=fCtlTerminal.getConnectors(); String connectionType=store.get(STORE_CONNECTION_TYPE); @@ -109,6 +114,7 @@ store.put(STORE_PART_NAME, fPartName); store.put(STORE_SUMMARY,fSummary); store.put(STORE_COMMAND_INPUT_FIELD_HISTORY, fHistory); + store.put(STORE_ENCODING, fEncoding); if(fCommandInputField!=null) store.put(STORE_COMMAND_INPUT_FIELD_HISTORY, fCommandInputField.getHistory()); else @@ -173,6 +179,7 @@ // display in the content description line. String strConnected = getStateDisplayName(fCtlTerminal.getState()); String summary = getSettingsSummary(); + String encoding=getEncoding(); //TODO Title should use an NLS String and com.ibm.icu.MessageFormat //In order to make the logic of assembling, and the separators, better adapt to foreign languages if(summary.length()>0) @@ -181,7 +188,10 @@ if(name.length()>0) { name+=": "; //$NON-NLS-1$ } - strTitle = name + "("+ summary + strConnected + ")"; //$NON-NLS-1$ //$NON-NLS-2$ + if (encoding.length()>0) { + encoding=ViewMessages.ENCODING+" "+"("+encoding+")"; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ + } + strTitle = name + "("+ summary + strConnected + ")"+" - "+encoding; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } return strTitle; } @@ -209,5 +219,17 @@ fPartName=name; } + public String getEncoding() { + return fCtlTerminal.getEncoding(); + } + public void setEncoding(String fEncoding) { + try { + fCtlTerminal.setEncoding(fEncoding); + this.fEncoding = fEncoding; + } catch (UnsupportedEncodingException uex) { + Logger.logException(uex); + } + + } } \ No newline at end of file Index: src/org/eclipse/tm/internal/terminal/view/ViewMessages.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/ViewMessages.java,v retrieving revision 1.11 diff -u -r1.11 ViewMessages.java --- src/org/eclipse/tm/internal/terminal/view/ViewMessages.java 1 Feb 2009 12:40:14 -0000 1.11 +++ src/org/eclipse/tm/internal/terminal/view/ViewMessages.java 20 Oct 2011 07:10:51 -0000 @@ -36,6 +36,7 @@ public static String VIEW_TITLE; public static String VIEW_SETTINGS; public static String INVALID_SETTINGS; + public static String ENCODING; public static String INVERT_COLORS; public static String BUFFERLINES; @@ -48,5 +49,5 @@ public static String CANNOT_INITIALIZE; public static String CONNECTOR_NOT_AVAILABLE; - + public static String ENCODING_NOT_AVAILABLE; } Index: src/org/eclipse/tm/internal/terminal/view/ViewMessages.properties =================================================================== RCS file: /cvsroot/tools/org.eclipse.tm.core/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/ViewMessages.properties,v retrieving revision 1.12 diff -u -r1.12 ViewMessages.properties --- src/org/eclipse/tm/internal/terminal/view/ViewMessages.properties 4 Jun 2010 12:39:59 -0000 1.12 +++ src/org/eclipse/tm/internal/terminal/view/ViewMessages.properties 20 Oct 2011 07:10:51 -0000 @@ -28,6 +28,7 @@ VIEW_TITLE = View Title: VIEW_SETTINGS = View Settings: INVALID_SETTINGS = The specified settings are invalid, please review or cancel. +ENCODING = Encoding: INVERT_COLORS = Invert terminal colors BUFFERLINES = Terminal buffer lines: @@ -40,3 +41,4 @@ CANNOT_INITIALIZE = Cannot initialize {0}:\n{1} CONNECTOR_NOT_AVAILABLE = Connector {0} is not available! +ENCODING_NOT_AVAILABLE = Encoding is not available! \ No newline at end of file