use of org.jkiss.dbeaver.ui.editors.SubEditorSite 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.jkiss.dbeaver.ui.editors.SubEditorSite in project dbeaver by serge-rider.
the class UIServiceSQLImpl method createSQLPanel.
@Override
public Object createSQLPanel(Object site, Object parent, DBPContextProvider contextProvider, String panelName, boolean showVerticalBar, String sqlText) throws DBException {
IWorkbenchPartSite partSite = (IWorkbenchPartSite) site;
Composite editorPH = (Composite) parent;
final SQLEditorBase editor = new SQLEditorBase() {
@Nullable
@Override
public DBCExecutionContext getExecutionContext() {
return contextProvider.getExecutionContext();
}
@Override
public void createPartControl(Composite parent) {
super.createPartControl(parent);
getAction(ITextEditorActionConstants.CONTEXT_PREFERENCES).setEnabled(false);
}
@Override
public boolean isFoldingEnabled() {
return false;
}
};
editor.setHasVerticalRuler(showVerticalBar);
try {
editor.init(new SubEditorSite(partSite), new StringEditorInput(panelName, sqlText, true, GeneralUtils.getDefaultFileEncoding()));
} catch (PartInitException e) {
throw new DBException("Error initializing SQL panel", e);
}
editor.createPartControl(editorPH);
editor.reloadSyntaxRules();
TextViewer textViewer = editor.getTextViewer();
textViewer.setData("editor", editor);
TextEditorUtils.enableHostEditorKeyBindingsSupport(partSite, textViewer.getTextWidget());
return textViewer;
}
use of org.jkiss.dbeaver.ui.editors.SubEditorSite in project dbeaver by dbeaver.
the class AbstractTextPanelEditor method createControl.
@Override
public StyledText createControl(IValueController valueController) {
this.valueController = valueController;
this.subSite = new SubEditorSite(valueController.getValueSite());
editor = createEditorParty(valueController);
try {
editor.init(subSite, StringEditorInput.EMPTY_INPUT);
} catch (PartInitException e) {
valueController.showMessage(e.getMessage(), DBPMessageType.ERROR);
return new StyledText(valueController.getEditPlaceholder(), SWT.NONE);
}
editor.createPartControl(valueController.getEditPlaceholder());
StyledText editorControl = editor.getEditorControl();
assert editorControl != null;
initEditorSettings(editorControl);
editorControl.addDisposeListener(e -> editor.releaseEditorInput());
editor.addContextMenuContributor(manager -> contributeTextEditorActions(manager, editorControl));
return editorControl;
}
use of org.jkiss.dbeaver.ui.editors.SubEditorSite 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;
}
use of org.jkiss.dbeaver.ui.editors.SubEditorSite in project dbeaver by dbeaver.
the class UIServiceSQLImpl method createSQLPanel.
@Override
public Object createSQLPanel(Object site, Object parent, DBPContextProvider contextProvider, String panelName, boolean showVerticalBar, String sqlText) throws DBException {
IWorkbenchPartSite partSite = (IWorkbenchPartSite) site;
Composite editorPH = (Composite) parent;
final SQLEditorBase editor = new SQLEditorBase() {
@Nullable
@Override
public DBCExecutionContext getExecutionContext() {
return contextProvider.getExecutionContext();
}
@Override
public void createPartControl(Composite parent) {
super.createPartControl(parent);
getAction(ITextEditorActionConstants.CONTEXT_PREFERENCES).setEnabled(false);
}
@Override
public boolean isFoldingEnabled() {
return false;
}
};
editor.setHasVerticalRuler(showVerticalBar);
try {
editor.init(new SubEditorSite(partSite), new StringEditorInput(panelName, sqlText, true, GeneralUtils.getDefaultFileEncoding()));
} catch (PartInitException e) {
throw new DBException("Error initializing SQL panel", e);
}
editor.createPartControl(editorPH);
editor.reloadSyntaxRules();
TextViewer textViewer = editor.getTextViewer();
textViewer.setData("editor", editor);
TextEditorUtils.enableHostEditorKeyBindingsSupport(partSite, textViewer.getTextWidget());
return textViewer;
}
Aggregations