/* * DBeaver - Universal Database Manager * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) * * 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://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License 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 org.jkiss.dbeaver.tools.compare; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; 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.*; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.ActiveWizardPage; import org.jkiss.dbeaver.ui.dialogs.DialogUtils; class CompareObjectsPageOutput extends ActiveWizardPage<CompareObjectsWizard> { private Button showOnlyDifference; private Combo reportTypeCombo; private Text outputFolderText; CompareObjectsPageOutput() { super("Compare objects"); setTitle("Compare database objects"); setDescription("Configuration of output report"); setPageComplete(false); } @Override public void createControl(Composite parent) { initializeDialogUnits(parent); Composite composite = new Composite(parent, SWT.NULL); GridLayout gl = new GridLayout(); gl.marginHeight = 0; gl.marginWidth = 0; composite.setLayout(gl); composite.setLayoutData(new GridData(GridData.FILL_BOTH)); final CompareObjectsSettings settings = getWizard().getSettings(); { Group reportSettings = new Group(composite, SWT.NONE); reportSettings.setText("Report settings"); gl = new GridLayout(1, false); reportSettings.setLayout(gl); reportSettings.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); showOnlyDifference = UIUtils.createCheckbox(reportSettings, "Show only differences", settings.isShowOnlyDifferences()); showOnlyDifference.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { settings.setShowOnlyDifferences(showOnlyDifference.getSelection()); } }); } { Group outputSettings = new Group(composite, SWT.NONE); outputSettings.setText("Output"); gl = new GridLayout(2, false); outputSettings.setLayout(gl); outputSettings.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); UIUtils.createControlLabel(outputSettings, "Output type"); reportTypeCombo = new Combo(outputSettings, SWT.DROP_DOWN | SWT.READ_ONLY); for (CompareObjectsSettings.OutputType outputType : CompareObjectsSettings.OutputType.values()) { reportTypeCombo.add(outputType.getTitle()); } reportTypeCombo.select(settings.getOutputType().ordinal()); reportTypeCombo.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { for (CompareObjectsSettings.OutputType outputType : CompareObjectsSettings.OutputType.values()) { if (outputType.ordinal() == reportTypeCombo.getSelectionIndex()) { settings.setOutputType(outputType); UIUtils.enableWithChildren(outputFolderText.getParent(), outputType == CompareObjectsSettings.OutputType.FILE); break; } } } }); outputFolderText = DialogUtils.createOutputFolderChooser(outputSettings, null, null); outputFolderText.setText(settings.getOutputFolder()); UIUtils.enableWithChildren(outputFolderText.getParent(), settings.getOutputType() == CompareObjectsSettings.OutputType.FILE); outputFolderText.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { settings.setOutputFolder(outputFolderText.getText()); } }); } setControl(composite); } @Override public void activatePage() { updatePageCompletion(); } @Override public void deactivatePage() { super.deactivatePage(); } @Override protected boolean determinePageCompletion() { return true; } }