/*
* Copyright 2012 Amazon Technologies, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://aws.amazon.com/apache2.0
*
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and
* limitations under the License.
*/
package com.amazonaws.eclipse.elasticbeanstalk.server.ui.configEditor;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.operations.AbstractOperation;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.wst.server.ui.editor.ServerEditorSection;
import com.amazonaws.eclipse.elasticbeanstalk.Environment;
public class DeploymentConfigEditorSection extends ServerEditorSection {
@Override
public void createSection(Composite parent) {
super.createSection(parent);
FormToolkit toolkit = getFormToolkit(parent.getDisplay());
String description = "Incremental deployment publishes only the changes in your project since your last deployment, which means faster deployments.";
Section section = toolkit.createSection(parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED
| ExpandableComposite.TITLE_BAR | Section.DESCRIPTION | ExpandableComposite.FOCUS_TITLE);
section.setText("AWS Elastic Beanstalk Deployment");
section.setDescription(description);
section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));
Composite composite = toolkit.createComposite(section);
GridLayout layout = new GridLayout();
layout.marginHeight = 8;
layout.marginWidth = 8;
composite.setLayout(layout);
composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.FILL_HORIZONTAL));
toolkit.paintBordersFor(composite);
section.setClient(composite);
final Button incrementalDeploymentCheckbox = toolkit.createButton(composite, "Use Incremental Deployments", SWT.CHECK);
final Environment environment = (Environment)server.getAdapter(Environment.class);
incrementalDeploymentCheckbox.setSelection(environment.getIncrementalDeployment());
incrementalDeploymentCheckbox.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
execute(new AbstractOperation("Incremental Deployments") {
private boolean originalState;
@Override
public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
environment.setIncrementalDeployment(originalState);
incrementalDeploymentCheckbox.setSelection(originalState);
return Status.OK_STATUS;
}
@Override
public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
environment.setIncrementalDeployment(!originalState);
incrementalDeploymentCheckbox.setSelection(!originalState);
return Status.OK_STATUS;
}
@Override
public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
originalState = environment.getIncrementalDeployment();
environment.setIncrementalDeployment(incrementalDeploymentCheckbox.getSelection());
return Status.OK_STATUS;
}
});
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
}
}