/******************************************************************************* * Copyright (c) 2012, 2016 Wind River Systems, Inc. and others. 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 * * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ package org.eclipse.tcf.te.tcf.launch.ui.remote.app; import org.eclipse.core.runtime.Assert; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.tcf.te.launch.core.persistence.DefaultPersistenceDelegate; import org.eclipse.tcf.te.launch.ui.interfaces.ILaunchConfigurationTabFormPart; import org.eclipse.tcf.te.tcf.launch.ui.nls.Messages; import org.eclipse.tcf.te.ui.forms.parts.AbstractSection; import org.eclipse.tcf.te.ui.swt.SWTControlUtil; import org.eclipse.tm.terminal.view.core.interfaces.constants.ILineSeparatorConstants; import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.widgets.ExpandableComposite; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Section; /** * Remote application advanced properties section implementation. */ public class LaunchConfigurationAdvancedTabSection extends AbstractSection implements ILaunchConfigurationTabFormPart { /* default */ Button lineSeparatorDefault; /* default */ Button lineSeparatorLF; /* default */ Button lineSeparatorCRLF; /* default */ Button lineSeparatorCR; /** * Constructor. * * @param form The parent managed form. Must not be <code>null</code>. * @param parent The parent composite. Must not be <code>null</code>. */ public LaunchConfigurationAdvancedTabSection(IManagedForm form, Composite parent) { super(form, parent, ExpandableComposite.TWISTIE); getSection().setBackground(parent.getBackground()); createClient(getSection(), form.getToolkit()); } /* (non-Javadoc) * @see org.eclipse.tcf.te.ui.forms.parts.AbstractSection#createClient(org.eclipse.ui.forms.widgets.Section, org.eclipse.ui.forms.widgets.FormToolkit) */ @Override protected void createClient(final Section section, FormToolkit toolkit) { Assert.isNotNull(section); Assert.isNotNull(toolkit); // Configure the section section.setText(Messages.LaunchConfigurationAdvancedTabSection_title); if (section.getParent().getLayout() instanceof GridLayout) { section.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL, SWT.CENTER, true, false)); } // Create the section client Composite client = createClientContainer(section, 1, toolkit); Assert.isNotNull(client); GridLayout layout = new GridLayout(); layout.marginLeft = 0; layout.marginHeight = 0; client.setLayout(layout); section.setClient(client); client.setBackground(section.getBackground()); Group group = new Group(client, SWT.NONE); group.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); group.setText(Messages.LaunchConfigurationAdvancedTabSection_group_label); group.setLayout(new GridLayout()); Label label = new Label(group, SWT.NONE); label.setText(Messages.LaunchConfigurationAdvancedTabSection_lineseparator_label); label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); Composite panel2 = new Composite(group, SWT.NONE); layout = new GridLayout(4, false); layout.marginLeft = 15; layout.marginHeight = 2; panel2.setLayout(layout); panel2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); lineSeparatorDefault = toolkit.createButton(panel2, Messages.LaunchConfigurationAdvancedTabSection_lineseparator_default, SWT.RADIO); lineSeparatorDefault.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (lineSeparatorDefault.getSelection()) { SWTControlUtil.setSelection(lineSeparatorLF, false); SWTControlUtil.setSelection(lineSeparatorCRLF, false); SWTControlUtil.setSelection(lineSeparatorCR, false); } } }); lineSeparatorLF = toolkit.createButton(panel2, Messages.LaunchConfigurationAdvancedTabSection_lineseparator_lf, SWT.RADIO); lineSeparatorLF.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (lineSeparatorDefault.getSelection()) { SWTControlUtil.setSelection(lineSeparatorDefault, false); SWTControlUtil.setSelection(lineSeparatorCRLF, false); SWTControlUtil.setSelection(lineSeparatorCR, false); } } }); lineSeparatorCRLF = toolkit.createButton(panel2, Messages.LaunchConfigurationAdvancedTabSection_lineseparator_crlf, SWT.RADIO); lineSeparatorCRLF.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (lineSeparatorDefault.getSelection()) { SWTControlUtil.setSelection(lineSeparatorDefault, false); SWTControlUtil.setSelection(lineSeparatorLF, false); SWTControlUtil.setSelection(lineSeparatorCR, false); } } }); lineSeparatorCR = toolkit.createButton(panel2, Messages.LaunchConfigurationAdvancedTabSection_lineseparator_cr, SWT.RADIO); lineSeparatorCR.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (lineSeparatorDefault.getSelection()) { SWTControlUtil.setSelection(lineSeparatorDefault, false); SWTControlUtil.setSelection(lineSeparatorLF, false); SWTControlUtil.setSelection(lineSeparatorCRLF, false); } } }); } /* (non-Javadoc) * @see org.eclipse.tcf.te.launch.ui.interfaces.ILaunchConfigurationTabFormPart#initializeFrom(org.eclipse.debug.core.ILaunchConfiguration) */ @Override public void initializeFrom(ILaunchConfiguration configuration) { Assert.isNotNull(configuration); String lineSeparator = DefaultPersistenceDelegate.getAttribute(configuration, ITerminalsConnectorConstants.PROP_LINE_SEPARATOR, (String)null); if (lineSeparator == null) { SWTControlUtil.setSelection(lineSeparatorDefault, true); } else if (ILineSeparatorConstants.LINE_SEPARATOR_LF.equals(lineSeparator)) { SWTControlUtil.setSelection(lineSeparatorLF, true); } else if (ILineSeparatorConstants.LINE_SEPARATOR_CRLF.equals(lineSeparator)) { SWTControlUtil.setSelection(lineSeparatorCRLF, true); } else if (ILineSeparatorConstants.LINE_SEPARATOR_CR.equals(lineSeparator)) { SWTControlUtil.setSelection(lineSeparatorCR, true); } } /* (non-Javadoc) * @see org.eclipse.tcf.te.launch.ui.interfaces.ILaunchConfigurationTabFormPart#performApply(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy) */ @Override public void performApply(ILaunchConfigurationWorkingCopy configuration) { Assert.isNotNull(configuration); String lineSeparator = null; if (SWTControlUtil.getSelection(lineSeparatorLF)) { lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_LF; } else if (SWTControlUtil.getSelection(lineSeparatorCRLF)) { lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_CRLF; } else if (SWTControlUtil.getSelection(lineSeparatorCR)) { lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_CR; } DefaultPersistenceDelegate.setAttribute(configuration, ITerminalsConnectorConstants.PROP_LINE_SEPARATOR, lineSeparator); } /* (non-Javadoc) * @see org.eclipse.tcf.te.launch.ui.interfaces.ILaunchConfigurationTabFormPart#isValid(org.eclipse.debug.core.ILaunchConfiguration) */ @Override public boolean isValid(ILaunchConfiguration configuration) { return true; } }