/*
* 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.ui.controls;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IPropertyListener;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.part.MultiPageEditorSite;
import org.jkiss.dbeaver.model.edit.DBEObjectManager;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry;
import org.jkiss.dbeaver.ui.editors.IDatabaseEditor;
public class ObjectEditorPageControl extends ProgressPageControl {
//private Button saveChangesButton;
private IDatabaseEditor workbenchPart;
private IPropertyListener propertyListener;
//private ToolBarManager objectEditToolbarManager;
public ObjectEditorPageControl(Composite parent, int style, IDatabaseEditor workbenchPart)
{
super(parent, style);
this.workbenchPart = workbenchPart;
// if (isObjectEditable()) {
// propertyListener = new IPropertyListener() {
// public void propertyChanged(Object source, int propId)
// {
// if (propId == IEditorPart.PROP_DIRTY) {
// boolean dirty = ((IEditorPart) source).isDirty();
// saveChangesButton.setEnabled(dirty);
// //viewChangesButton.setEnabled(dirty);
// //resetChangesButton.setEnabled(dirty);
// }
// }
// };
// getMainEditorPart().addPropertyListener(propertyListener);
// }
}
@Override
public void disposeControl()
{
/*
if (objectEditToolbarManager != null) {
objectEditToolbarManager.dispose();
objectEditToolbarManager = null;
}
*/
if (propertyListener != null) {
getMainEditorPart().removePropertyListener(propertyListener);
propertyListener = null;
}
super.disposeControl();
}
public IDatabaseEditor getEditorPart()
{
return workbenchPart;
}
public boolean isObjectEditable()
{
DBCExecutionContext context = getEditorPart().getEditorInput().getExecutionContext();
if (context == null) {
return false;
}
if (context.getDataSource().getInfo().isReadOnlyMetaData()) {
return false;
}
DBSObject databaseObject = getEditorPart().getEditorInput().getDatabaseObject();
return databaseObject != null && EntityEditorsRegistry.getInstance().getObjectManager(databaseObject.getClass(), DBEObjectManager.class) != null;
}
private IEditorPart getMainEditorPart()
{
IWorkbenchPartSite site = workbenchPart.getSite();
if (site instanceof MultiPageEditorSite) {
return ((MultiPageEditorSite)site).getMultiPageEditor();
} else {
return workbenchPart;
}
}
/*
@Override
protected Composite createProgressPanel(Composite container) {
Composite panel = super.createProgressPanel(container);
DBECommandContext commandContext = getEditorPart().getEditorInput().getCommandContext();
if (commandContext == null || !isObjectEditable()) {
return panel;
}
final Composite toolsPanel = UIUtils.createPlaceholder(panel, 1);
ToolBar toolBar = new ToolBar(toolsPanel, SWT.FLAT | SWT.HORIZONTAL);
objectEditToolbarManager = new ToolBarManager(toolBar);
objectEditToolbarManager.add(ActionUtils.makeCommandContribution(
DBeaverCore.getInstance().getWorkbench(),
CoreCommands.CMD_OBJECT_CREATE));
objectEditToolbarManager.add(ActionUtils.makeCommandContribution(
DBeaverCore.getInstance().getWorkbench(),
CoreCommands.CMD_OBJECT_DELETE));
objectEditToolbarManager.add(ActionUtils.makeCommandContribution(
DBeaverCore.getInstance().getWorkbench(),
IWorkbenchCommandConstants.FILE_SAVE));
objectEditToolbarManager.update(true);
//objectEditToolbarManager.createControl(toolsPanel);
// saveChangesButton = new Button(toolsPanel, SWT.FLAT | SWT.PUSH);
// saveChangesButton.setText("Save / Preview");
// saveChangesButton.setImage(DBIcon.SAVE_TO_DATABASE.getImage());
// saveChangesButton.setToolTipText("Persist all changes");
// saveChangesButton.setEnabled(false);
// saveChangesButton.addSelectionListener(new SelectionAdapter() {
// @Override
// public void widgetSelected(SelectionEvent e) {
// try {
// workbenchPart.getSite().getWorkbenchWindow().run(true, true, new IRunnableWithProgress() {
// public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException
// {
// getMainEditorPart().doSave(monitor);
// }
// });
// } catch (InvocationTargetException e1) {
// UIUtils.showErrorDialog(null, "Save DB object", "Can't save database object", e1.getTargetException());
// } catch (InterruptedException e1) {
// // do nothing
// }
// }
// });
return panel;
}
*/
}