org.fusesource.ide.sap.ui.properties.uicreator.OptionalServerDataUICreator.java Source code

Java tutorial

Introduction

Here is the source code for org.fusesource.ide.sap.ui.properties.uicreator.OptionalServerDataUICreator.java

Source

/*******************************************************************************
 * Copyright (c) 2016 Red Hat, Inc. 
 * Distributed under license by Red Hat, Inc. All rights reserved. 
 * This program is 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: 
 * Red Hat, Inc. - initial API and implementation 
 ******************************************************************************/
package org.fusesource.ide.sap.ui.properties.uicreator;

import org.eclipse.core.databinding.Binding;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.UpdateValueStrategy;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.emf.databinding.FeaturePath;
import org.eclipse.emf.databinding.edit.EMFEditProperties;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.databinding.fieldassist.ControlDecorationSupport;
import org.eclipse.jface.databinding.swt.WidgetProperties;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
import org.fusesource.camel.component.sap.model.rfc.RfcPackage.Literals;
import org.fusesource.camel.component.sap.model.rfc.impl.ServerDataStoreEntryImpl;
import org.fusesource.ide.sap.ui.Messages;
import org.fusesource.ide.sap.ui.converter.Boolean2StringConverter;
import org.fusesource.ide.sap.ui.converter.String2BooleanConverter;
import org.fusesource.ide.sap.ui.util.LayoutUtil;
import org.fusesource.ide.sap.ui.validator.NonNegativeIntegerValidator;
import org.fusesource.ide.sap.ui.validator.SapRouterStringValidator;

/**
 * @author Aurelien Pupier
 *
 */
public class OptionalServerDataUICreator implements IServerDataUICreator {

    private Button traceBtn;
    private Text saprouterText;
    private Text workerThreadCountText;
    private Text workerThreadMinCountText;
    private Text maxStartupDelayText;
    private Text repositoryMapText;

    @Override
    public void createControls(Composite optionalContainer, TabbedPropertySheetWidgetFactory widgetFactory) {
        traceBtn = widgetFactory.createButton(optionalContainer, Messages.OptionalServerPropertySection_TraceLabel,
                SWT.CHECK);
        traceBtn.setToolTipText(Messages.OptionalServerPropertySection_TraceToolTip);
        traceBtn.setLayoutData(LayoutUtil.firstEntryLayoutData());

        saprouterText = widgetFactory.createText(optionalContainer, null);
        HelpDecorator.createHelpDecoration(Messages.OptionalServerPropertySection_SaprouterToolTip, saprouterText);
        saprouterText.setLayoutData(LayoutUtil.entryLayoutData(traceBtn));

        CLabel saprouterLbl = widgetFactory.createCLabel(optionalContainer,
                Messages.OptionalServerPropertySection_SaprouterLabel);
        saprouterLbl.setLayoutData(LayoutUtil.labelLayoutData(saprouterText));
        saprouterLbl.setAlignment(SWT.RIGHT);

        workerThreadCountText = widgetFactory.createText(optionalContainer, null);
        HelpDecorator.createHelpDecoration(Messages.OptionalServerPropertySection_WorkerThreadCountToolTip,
                workerThreadCountText);
        workerThreadCountText.setLayoutData(LayoutUtil.entryLayoutData(saprouterText));

        CLabel workerThreadCountLbl = widgetFactory.createCLabel(optionalContainer,
                Messages.OptionalServerPropertySection_WorkerThreadCountLabel);
        workerThreadCountLbl.setLayoutData(LayoutUtil.labelLayoutData(workerThreadCountText));
        workerThreadCountLbl.setAlignment(SWT.RIGHT);

        workerThreadMinCountText = widgetFactory.createText(optionalContainer, null);
        HelpDecorator.createHelpDecoration(Messages.OptionalServerPropertySection_WorkerThreadMinCountToolTip,
                workerThreadMinCountText);
        workerThreadMinCountText.setLayoutData(LayoutUtil.entryLayoutData(workerThreadCountText));

        CLabel workerThreadMinCountLbl = widgetFactory.createCLabel(optionalContainer,
                Messages.OptionalServerPropertySection_WorkerThreadMinCountLabel);
        workerThreadMinCountLbl.setLayoutData(LayoutUtil.labelLayoutData(workerThreadMinCountText));
        workerThreadMinCountLbl.setAlignment(SWT.RIGHT);

        maxStartupDelayText = widgetFactory.createText(optionalContainer, null);
        HelpDecorator.createHelpDecoration(Messages.OptionalServerPropertySection_MaxStartupDelayToolTip,
                maxStartupDelayText);
        maxStartupDelayText.setLayoutData(LayoutUtil.entryLayoutData(workerThreadMinCountText));

        CLabel maxStartupDelayLbl = widgetFactory.createCLabel(optionalContainer,
                Messages.OptionalServerPropertySection_MaxStartupDelayLabel);
        maxStartupDelayLbl.setLayoutData(LayoutUtil.labelLayoutData(maxStartupDelayText));
        maxStartupDelayLbl.setAlignment(SWT.RIGHT);

        repositoryMapText = widgetFactory.createText(optionalContainer, null);
        HelpDecorator.createHelpDecoration(Messages.OptionalServerPropertySection_RepoistoryMapToolTip,
                repositoryMapText);
        repositoryMapText.setLayoutData(LayoutUtil.entryLayoutData(maxStartupDelayText));

        CLabel repositoryMapLbl = widgetFactory.createCLabel(optionalContainer,
                Messages.OptionalServerPropertySection_RepoistoryMapLabel);
        repositoryMapLbl.setLayoutData(LayoutUtil.labelLayoutData(repositoryMapText));
        repositoryMapLbl.setAlignment(SWT.RIGHT);
    }

    @Override
    public void initDataBindings(DataBindingContext bindingContext, EditingDomain editingDomain,
            ServerDataStoreEntryImpl serverDataStoreEntry) {
        //
        IObservableValue observeSelectionTraceBtnObserveWidget = WidgetProperties.selection().observe(traceBtn);
        IObservableValue managedConnectionFactoryTraceObserveValue = EMFEditProperties
                .value(editingDomain,
                        FeaturePath.fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE, Literals.SERVER_DATA__TRACE))
                .observe(serverDataStoreEntry);
        UpdateValueStrategy traceStrategy = new UpdateValueStrategy();
        traceStrategy.setConverter(new Boolean2StringConverter());
        UpdateValueStrategy traceModelStrategy = new UpdateValueStrategy();
        traceModelStrategy.setConverter(new String2BooleanConverter());
        bindingContext.bindValue(observeSelectionTraceBtnObserveWidget, managedConnectionFactoryTraceObserveValue,
                traceStrategy, traceModelStrategy);
        //
        IObservableValue observeTextSapRouterTextObserveWidget = WidgetProperties.text(SWT.Modify)
                .observeDelayed(300, saprouterText);
        IObservableValue serverDataSapRouterObserveValue = EMFEditProperties.value(editingDomain,
                FeaturePath.fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE, Literals.SERVER_DATA__SAPROUTER))
                .observe(serverDataStoreEntry);
        UpdateValueStrategy sapRouterStrategy = new UpdateValueStrategy();
        sapRouterStrategy.setBeforeSetValidator(new SapRouterStringValidator());
        Binding saprouterBinding = bindingContext.bindValue(observeTextSapRouterTextObserveWidget,
                serverDataSapRouterObserveValue, sapRouterStrategy, null);
        //
        IObservableValue observeTextWorkerThreadCountTextObserveWidget = WidgetProperties.text(SWT.Modify)
                .observeDelayed(300, workerThreadCountText);
        IObservableValue serverDataWorkerThreadCountObserveValue = EMFEditProperties
                .value(editingDomain, FeaturePath.fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE,
                        Literals.SERVER_DATA__WORKER_THREAD_COUNT))
                .observe(serverDataStoreEntry);
        UpdateValueStrategy workerThreadCountStrategy = new UpdateValueStrategy();
        workerThreadCountStrategy.setBeforeSetValidator(
                new NonNegativeIntegerValidator(Messages.OptionalServerPropertySection_WorkerThreadCountValidator));
        Binding workerThreadCountBinding = bindingContext.bindValue(observeTextWorkerThreadCountTextObserveWidget,
                serverDataWorkerThreadCountObserveValue, workerThreadCountStrategy, null);
        //
        IObservableValue observeTextWorkerThreadMinCountTextObserveWidget = WidgetProperties.text(SWT.Modify)
                .observeDelayed(300, workerThreadMinCountText);
        IObservableValue serverDataWorkerThreadMinCountObserveValue = EMFEditProperties
                .value(editingDomain, FeaturePath.fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE,
                        Literals.SERVER_DATA__WORKER_THREAD_MIN_COUNT))
                .observe(serverDataStoreEntry);
        UpdateValueStrategy workerThreadMinCountStrategy = new UpdateValueStrategy();
        workerThreadMinCountStrategy.setBeforeSetValidator(new NonNegativeIntegerValidator(
                Messages.OptionalServerPropertySection_WorkerThreadMinCountValidator));
        Binding workerThreadMinCountBinding = bindingContext.bindValue(
                observeTextWorkerThreadMinCountTextObserveWidget, serverDataWorkerThreadMinCountObserveValue,
                workerThreadMinCountStrategy, null);
        //
        IObservableValue observeTextMaxStartupDelayTextObserveWidget = WidgetProperties.text(SWT.Modify)
                .observeDelayed(300, maxStartupDelayText);
        IObservableValue serverDataMaxStartupDelayObserveValue = EMFEditProperties.value(editingDomain, FeaturePath
                .fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE, Literals.SERVER_DATA__MAX_START_UP_DELAY))
                .observe(serverDataStoreEntry);
        UpdateValueStrategy maxStartupDelayStrategy = new UpdateValueStrategy();
        maxStartupDelayStrategy.setBeforeSetValidator(
                new NonNegativeIntegerValidator(Messages.OptionalServerPropertySection_MaxStartupDelayValidator));
        Binding maxStartupDelayBinding = bindingContext.bindValue(observeTextMaxStartupDelayTextObserveWidget,
                serverDataMaxStartupDelayObserveValue, maxStartupDelayStrategy, null);
        //
        IObservableValue observeRepositoryMapTextObserveWidget = WidgetProperties.text(SWT.Modify)
                .observeDelayed(300, repositoryMapText);
        IObservableValue serverRepositoryMapObserveValue = EMFEditProperties.value(editingDomain,
                FeaturePath.fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE, Literals.SERVER_DATA__REPOSITORY_MAP))
                .observe(serverDataStoreEntry);
        bindingContext.bindValue(observeRepositoryMapTextObserveWidget, serverRepositoryMapObserveValue);

        ControlDecorationSupport.create(saprouterBinding, SWT.TOP | SWT.LEFT);
        ControlDecorationSupport.create(workerThreadCountBinding, SWT.TOP | SWT.LEFT);
        ControlDecorationSupport.create(workerThreadMinCountBinding, SWT.TOP | SWT.LEFT);
        ControlDecorationSupport.create(maxStartupDelayBinding, SWT.TOP | SWT.LEFT);

    }

}