use of org.eclipse.ui.IEditorSite in project dbeaver by serge-rider.
the class Spreadsheet method hookContextMenu.
private void hookContextMenu() {
MenuManager menuMgr = new MenuManager(null, AbstractPresentation.RESULT_SET_PRESENTATION_CONTEXT_MENU);
Menu menu = menuMgr.createContextMenu(this);
menuMgr.addMenuListener(manager -> {
// Let controller to provide it's own menu items
GridPos focusPos = getFocusPos();
presentation.fillContextMenu(manager, isHoveringOnRowHeader() ? null : focusPos.col >= 0 && focusPos.col < columnElements.length ? columnElements[focusPos.col] : null, isHoveringOnHeader() ? null : (focusPos.row >= 0 && focusPos.row < rowElements.length ? rowElements[focusPos.row] : null));
});
menuMgr.setRemoveAllWhenShown(true);
super.setMenu(menu);
if (site instanceof IEditorSite) {
// Exclude editor input contributions from context menu
((IEditorSite) site).registerContextMenu("spreadsheet_menu", menuMgr, presentation, false);
} else {
site.registerContextMenu(menuMgr, presentation);
}
}
use of org.eclipse.ui.IEditorSite in project dbeaver by serge-rider.
the class ResultSetStatListener method handleResultSetSelectionChange.
@Override
public void handleResultSetSelectionChange(SelectionChangedEvent event) {
IResultSetSelection selection = viewer.getSelection();
IWorkbenchPartSite site = viewer.getSite();
if (site instanceof IEditorSite) {
// Use job with 100ms delay to avoid event spam
if (this.updateJob == null) {
this.updateJob = new SLUpdateJob();
}
this.updateJob.schedule(100);
}
}
use of org.eclipse.ui.IEditorSite in project dbeaver by serge-rider.
the class PrefPageSQLFormat method createPreferenceContent.
@Override
protected Control createPreferenceContent(Composite parent) {
Composite composite = UIUtils.createPlaceholder(parent, 3, 5);
formatterSelector = UIUtils.createLabelCombo(composite, SQLEditorMessages.pref_page_sql_format_label_formatter, SWT.DROP_DOWN | SWT.READ_ONLY);
formatterSelector.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
formatters = SQLFormatterConfigurationRegistry.getInstance().getFormatters();
formatters.sort(Comparator.comparing(SQLFormatterDescriptor::getLabel));
for (SQLFormatterDescriptor formatterDesc : formatters) {
formatterSelector.add(DBPIdentifierCase.capitalizeCaseName(formatterDesc.getLabel()));
}
formatterSelector.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
showFormatterSettings();
performApply();
}
});
formatterSelector.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
formatCurrentQueryCheck = UIUtils.createCheckbox(composite, "Format active query only", "Formats only active query or selected text. Otherwise formats entire SQL script", true, 1);
Composite formatterGroup = UIUtils.createPlaceholder(composite, 1, 5);
formatterGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
((GridData) formatterGroup.getLayoutData()).horizontalSpan = 3;
/*
{
Composite formatterPanel = UIUtils.createPlaceholder(formatterGroup, 4, 5);
formatterPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
keywordCaseCombo = UIUtils.createLabelCombo(formatterPanel, CoreMessages.pref_page_sql_format_label_keyword_case, SWT.DROP_DOWN | SWT.READ_ONLY);
keywordCaseCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
keywordCaseCombo.add("Database");
for (DBPIdentifierCase c :DBPIdentifierCase.values()) {
keywordCaseCombo.add(DBPIdentifierCase.capitalizeCaseName(c.name()));
}
keywordCaseCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
performApply();
}
});
}
*/
// External formatter
{
formatterConfigPlaceholder = UIUtils.createPlaceholder(formatterGroup, 2, 5);
formatterConfigPlaceholder.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_BEGINNING));
formatterConfigPlaceholder.setLayout(new FillLayout());
}
{
// SQL preview
Composite previewGroup = new Composite(composite, SWT.BORDER);
GridData gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 3;
previewGroup.setLayoutData(gd);
previewGroup.setLayout(new FillLayout());
sqlViewer = new SQLEditorBase() {
@Override
public DBCExecutionContext getExecutionContext() {
final DBPDataSourceContainer container = getDataSourceContainer();
if (container != null) {
final DBPDataSource dataSource = container.getDataSource();
if (dataSource != null) {
return DBUtils.getDefaultContext(dataSource.getDefaultInstance(), false);
}
}
return null;
}
};
try {
try (final InputStream sqlStream = getClass().getResourceAsStream(FORMAT_FILE_NAME)) {
final String sqlText = ContentUtils.readToString(sqlStream, StandardCharsets.UTF_8);
IEditorSite subSite = new SubEditorSite(UIUtils.getActiveWorkbenchWindow().getActivePage().getActivePart().getSite());
StringEditorInput sqlInput = new StringEditorInput("SQL preview", sqlText, true, GeneralUtils.getDefaultFileEncoding());
sqlViewer.init(subSite, sqlInput);
}
} catch (Exception e) {
log.error(e);
}
sqlViewer.createPartControl(previewGroup);
Object text = sqlViewer.getAdapter(Control.class);
if (text instanceof StyledText) {
((StyledText) text).setWordWrap(true);
}
sqlViewer.reloadSyntaxRules();
previewGroup.addDisposeListener(e -> sqlViewer.dispose());
{
// Styles
// Composite afGroup = UIUtils.createControlGroup(composite, CoreMessages.pref_page_sql_format_group_style, 1, GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING, 0);
// ((GridData)afGroup.getLayoutData()).horizontalSpan = 2;
styleBoldKeywords = UIUtils.createCheckbox(composite, SQLEditorMessages.pref_page_sql_format_label_bold_keywords, SQLEditorMessages.pref_page_sql_format_label_bold_keywords_tip, false, 2);
styleBoldKeywords.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
performApply();
}
});
}
}
return composite;
}
use of org.eclipse.ui.IEditorSite in project dbeaver by serge-rider.
the class SQLEditorNested method refreshPart.
@Override
public void refreshPart(Object source, boolean force) {
// Check if we are in saving process
// If so then no refresh needed (source text was updated during save)
IEditorSite editorSite = getEditorSite();
if (editorSite instanceof MultiPageEditorSite && ((MultiPageEditorSite) editorSite).getMultiPageEditor() instanceof EntityEditor && ((EntityEditor) ((MultiPageEditorSite) editorSite).getMultiPageEditor()).isSaveInProgress()) {
return;
}
final IDocumentProvider documentProvider = getDocumentProvider();
if (documentProvider instanceof SQLEditorNested.ObjectDocumentProvider) {
((SQLEditorNested.ObjectDocumentProvider) documentProvider).sourceText = null;
}
if (force) {
int caretOffset = getEditorControl().getCaretOffset();
super.setInput(getEditorInput());
// Try to keep cursor position
if (caretOffset < getEditorControl().getCharCount()) {
getEditorControl().setCaretOffset(caretOffset);
}
}
reloadSyntaxRules();
}
use of org.eclipse.ui.IEditorSite in project dbeaver by dbeaver.
the class PrefPageSQLFormat method createPreferenceContent.
@Override
protected Control createPreferenceContent(Composite parent) {
Composite composite = UIUtils.createPlaceholder(parent, 3, 5);
formatterSelector = UIUtils.createLabelCombo(composite, SQLEditorMessages.pref_page_sql_format_label_formatter, SWT.DROP_DOWN | SWT.READ_ONLY);
formatterSelector.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
formatters = SQLFormatterConfigurationRegistry.getInstance().getFormatters();
formatters.sort(Comparator.comparing(SQLFormatterDescriptor::getLabel));
for (SQLFormatterDescriptor formatterDesc : formatters) {
formatterSelector.add(DBPIdentifierCase.capitalizeCaseName(formatterDesc.getLabel()));
}
formatterSelector.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
showFormatterSettings();
performApply();
}
});
formatterSelector.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
formatCurrentQueryCheck = UIUtils.createCheckbox(composite, "Format active query only", "Formats only active query or selected text. Otherwise formats entire SQL script", true, 1);
Composite formatterGroup = UIUtils.createPlaceholder(composite, 1, 5);
formatterGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
((GridData) formatterGroup.getLayoutData()).horizontalSpan = 3;
/*
{
Composite formatterPanel = UIUtils.createPlaceholder(formatterGroup, 4, 5);
formatterPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
keywordCaseCombo = UIUtils.createLabelCombo(formatterPanel, CoreMessages.pref_page_sql_format_label_keyword_case, SWT.DROP_DOWN | SWT.READ_ONLY);
keywordCaseCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
keywordCaseCombo.add("Database");
for (DBPIdentifierCase c :DBPIdentifierCase.values()) {
keywordCaseCombo.add(DBPIdentifierCase.capitalizeCaseName(c.name()));
}
keywordCaseCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
performApply();
}
});
}
*/
// External formatter
{
formatterConfigPlaceholder = UIUtils.createPlaceholder(formatterGroup, 2, 5);
formatterConfigPlaceholder.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_BEGINNING));
formatterConfigPlaceholder.setLayout(new FillLayout());
}
{
// SQL preview
Composite previewGroup = new Composite(composite, SWT.BORDER);
GridData gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 3;
previewGroup.setLayoutData(gd);
previewGroup.setLayout(new FillLayout());
sqlViewer = new SQLEditorBase() {
@Override
public DBCExecutionContext getExecutionContext() {
final DBPDataSourceContainer container = getDataSourceContainer();
if (container != null) {
final DBPDataSource dataSource = container.getDataSource();
if (dataSource != null) {
return DBUtils.getDefaultContext(dataSource.getDefaultInstance(), false);
}
}
return null;
}
};
try {
try (final InputStream sqlStream = getClass().getResourceAsStream(FORMAT_FILE_NAME)) {
final String sqlText = ContentUtils.readToString(sqlStream, StandardCharsets.UTF_8);
IEditorSite subSite = new SubEditorSite(UIUtils.getActiveWorkbenchWindow().getActivePage().getActivePart().getSite());
StringEditorInput sqlInput = new StringEditorInput("SQL preview", sqlText, true, GeneralUtils.getDefaultFileEncoding());
sqlViewer.init(subSite, sqlInput);
}
} catch (Exception e) {
log.error(e);
}
sqlViewer.createPartControl(previewGroup);
Object text = sqlViewer.getAdapter(Control.class);
if (text instanceof StyledText) {
((StyledText) text).setWordWrap(true);
}
sqlViewer.reloadSyntaxRules();
previewGroup.addDisposeListener(e -> sqlViewer.dispose());
{
// Styles
// Composite afGroup = UIUtils.createControlGroup(composite, CoreMessages.pref_page_sql_format_group_style, 1, GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING, 0);
// ((GridData)afGroup.getLayoutData()).horizontalSpan = 2;
styleBoldKeywords = UIUtils.createCheckbox(composite, SQLEditorMessages.pref_page_sql_format_label_bold_keywords, SQLEditorMessages.pref_page_sql_format_label_bold_keywords_tip, false, 2);
styleBoldKeywords.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
performApply();
}
});
}
}
return composite;
}
Aggregations