/*
* 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.data;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IWorkbenchPartSite;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPMessageType;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
/**
* DBD Value Controller
*/
public interface IValueController
{
/**
* Value editor type
*/
enum EditType {
NONE, // Void editor, should be ignored by users
INLINE, // Inline editor, appears right in grid's cell
PANEL, // "Preview" editor, appears on a special grid panel.
// May be reused to edit different cells of the same type.
EDITOR // Separate editor, dialog or standalone editor window
}
/**
* Active execution context. Context lifetime is longer than value handler lifetime.
* @return execution context
*/
@NotNull
DBCExecutionContext getExecutionContext();
/**
* Value name (name of attribute or other metadata object)
* @return value name
*/
String getValueName();
/**
* Value type
* @return meta data
*/
DBSTypedObject getValueType();
/**
* Column value
* @return value
*/
@Nullable
Object getValue();
/**
* Updates value
* @param value value
* @param updatePresentation refresh UI
*/
void updateValue(@Nullable Object value, boolean updatePresentation);
/**
* Associated value handler
* @return value handler
*/
DBDValueHandler getValueHandler();
/**
* Associated value manager
* @return value manager
*/
IValueManager getValueManager();
EditType getEditType();
/**
* True if current cell is read-only.
* @return read only flag
*/
boolean isReadOnly();
/**
* Controller's host site
* @return site
*/
IWorkbenchPartSite getValueSite();
/**
* Inline or panel placeholder. Editor controls should be created inside of this placeholder.
* In case of separated editor it is null.
* @return placeholder control or null
*/
Composite getEditPlaceholder();
/**
* Refreshes (recreates) editor.
*/
void refreshEditor();
/**
* Show error/warning message in grid control.
* @param messageType status message type
* @param message error message
*/
void showMessage(String message, DBPMessageType messageType);
}