/* * DBeaver - Universal Database Manager * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) * Copyright (C) 2011-2012 Eugene Fradkin (eugene.fradkin@gmail.com) * * 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.ext.mysql.tools; import org.eclipse.jface.fieldassist.SimpleContentProposalProvider; import org.eclipse.jface.fieldassist.TextContentAdapter; import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.ext.mysql.MySQLMessages; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.DialogUtils; import org.jkiss.utils.CommonUtils; import java.io.File; class MySQLExportWizardPageSettings extends MySQLWizardPageSettings<MySQLExportWizard> { private Text outputFolderText; private Text outputFileText; private Text extraCommandArgsText; private Combo methodCombo; private Button noCreateStatementsCheck; private Button addDropStatementsCheck; private Button disableKeysCheck; private Button extendedInsertsCheck; private Button dumpEventsCheck; private Button commentsCheck; private Button removeDefiner; private Button binaryInHex; protected MySQLExportWizardPageSettings(MySQLExportWizard wizard) { super(wizard, MySQLMessages.tools_db_export_wizard_page_settings_page_name); setTitle(MySQLMessages.tools_db_export_wizard_page_settings_page_name); setDescription((MySQLMessages.tools_db_export_wizard_page_settings_page_description)); } @Override public boolean isPageComplete() { return super.isPageComplete() && wizard.getOutputFolder() != null; } @Override public void createControl(Composite parent) { Composite composite = UIUtils.createPlaceholder(parent, 1); SelectionListener changeListener = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { updateState(); } }; Group methodGroup = UIUtils.createControlGroup(composite, MySQLMessages.tools_db_export_wizard_page_settings_group_exe_method, 1, GridData.FILL_HORIZONTAL, 0); methodCombo = new Combo(methodGroup, SWT.DROP_DOWN | SWT.READ_ONLY); methodCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); methodCombo.add(MySQLMessages.tools_db_export_wizard_page_settings_combo_item_online_backup); methodCombo.add(MySQLMessages.tools_db_export_wizard_page_settings_combo_item_lock_tables); methodCombo.add(MySQLMessages.tools_db_export_wizard_page_settings_combo_item_normal); methodCombo.select(wizard.method.ordinal()); methodCombo.addSelectionListener(changeListener); Group settingsGroup = UIUtils.createControlGroup(composite, MySQLMessages.tools_db_export_wizard_page_settings_group_settings, 3, GridData.FILL_HORIZONTAL, 0); noCreateStatementsCheck = UIUtils.createCheckbox(settingsGroup, MySQLMessages.tools_db_export_wizard_page_settings_checkbox_no_create, wizard.noCreateStatements); noCreateStatementsCheck.addSelectionListener(changeListener); addDropStatementsCheck = UIUtils.createCheckbox(settingsGroup, MySQLMessages.tools_db_export_wizard_page_settings_checkbox_add_drop, wizard.addDropStatements); addDropStatementsCheck.addSelectionListener(changeListener); disableKeysCheck = UIUtils.createCheckbox(settingsGroup, MySQLMessages.tools_db_export_wizard_page_settings_checkbox_disable_keys, wizard.disableKeys); disableKeysCheck.addSelectionListener(changeListener); extendedInsertsCheck = UIUtils.createCheckbox(settingsGroup, MySQLMessages.tools_db_export_wizard_page_settings_checkbox_ext_inserts, wizard.extendedInserts); extendedInsertsCheck.addSelectionListener(changeListener); dumpEventsCheck = UIUtils.createCheckbox(settingsGroup, MySQLMessages.tools_db_export_wizard_page_settings_checkbox_dump_events, wizard.dumpEvents); dumpEventsCheck.addSelectionListener(changeListener); commentsCheck = UIUtils.createCheckbox(settingsGroup, MySQLMessages.tools_db_export_wizard_page_settings_checkbox_addnl_comments, wizard.comments); commentsCheck.addSelectionListener(changeListener); removeDefiner = UIUtils.createCheckbox(settingsGroup, MySQLMessages.tools_db_export_wizard_page_settings_checkbox_remove_definer, wizard.removeDefiner); removeDefiner.addSelectionListener(changeListener); binaryInHex = UIUtils.createCheckbox(settingsGroup, MySQLMessages.tools_db_export_wizard_page_settings_checkbox_binary_hex, wizard.binariesInHex); binaryInHex.addSelectionListener(changeListener); Group outputGroup = UIUtils.createControlGroup(composite, MySQLMessages.tools_db_export_wizard_page_settings_group_output, 2, GridData.FILL_HORIZONTAL, 0); outputFolderText = DialogUtils.createOutputFolderChooser(outputGroup, MySQLMessages.tools_db_export_wizard_page_settings_label_out_text, new ModifyListener() { @Override public void modifyText(ModifyEvent e) { updateState(); } }); outputFileText = UIUtils.createLabelText(outputGroup, "File name pattern", wizard.getOutputFilePattern()); UIUtils.setContentProposalToolTip(outputFileText, "Output file name pattern", "host", "database", "table", "timestamp"); UIUtils.installContentProposal( outputFileText, new TextContentAdapter(), new SimpleContentProposalProvider(new String[]{"${host}", "${database}", "${table}", "${timestamp}"})); outputFileText.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { wizard.setOutputFilePattern(outputFileText.getText()); } }); extraCommandArgsText = UIUtils.createLabelText(outputGroup, "Extra command args", wizard.getExtraCommandArgs()); extraCommandArgsText.setToolTipText("Set extra command args for mysqldump."); UIUtils.installContentProposal( extraCommandArgsText, new TextContentAdapter(), new SimpleContentProposalProvider(new String[]{})); extraCommandArgsText.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { wizard.setExtraCommandArgs(extraCommandArgsText.getText()); } }); if (wizard.getOutputFolder() != null) { outputFolderText.setText(wizard.getOutputFolder().getAbsolutePath()); } createSecurityGroup(composite); setControl(composite); } private void updateState() { String fileName = outputFolderText.getText(); wizard.setOutputFolder(CommonUtils.isEmpty(fileName) ? null : new File(fileName)); wizard.setOutputFilePattern(outputFileText.getText()); wizard.setExtraCommandArgs(extraCommandArgsText.getText()); switch (methodCombo.getSelectionIndex()) { case 0: wizard.method = MySQLExportWizard.DumpMethod.ONLINE; break; case 1: wizard.method = MySQLExportWizard.DumpMethod.LOCK_ALL_TABLES; break; default: wizard.method = MySQLExportWizard.DumpMethod.NORMAL; break; } wizard.noCreateStatements = noCreateStatementsCheck.getSelection(); wizard.addDropStatements = addDropStatementsCheck.getSelection(); wizard.disableKeys = disableKeysCheck.getSelection(); wizard.extendedInserts = extendedInsertsCheck.getSelection(); wizard.dumpEvents = dumpEventsCheck.getSelection(); wizard.comments = commentsCheck.getSelection(); wizard.removeDefiner = removeDefiner.getSelection(); wizard.binariesInHex = binaryInHex.getSelection(); getContainer().updateButtons(); } }