use of org.jkiss.dbeaver.model.sql.registry.SQLFormatterDescriptor in project dbeaver by serge-rider.
the class PrefPageSQLFormat method showFormatterSettings.
private void showFormatterSettings() {
if (curConfigurator != null) {
curConfigurator.saveSettings(getTargetPreferenceStore());
}
UIUtils.disposeChildControls(formatterConfigPlaceholder);
SQLFormatterDescriptor selFormatter = formatters.get(formatterSelector.getSelectionIndex());
try {
SQLFormatter sqlFormatter = selFormatter.createFormatter();
// FIXME: for now we support only predefined list of formatters
if (sqlFormatter instanceof SQLFormatterTokenized) {
curConfigurator = new SQLTokenizedFormatterConfigurationPage();
} else if (sqlFormatter instanceof SQLFormatterExternal) {
curConfigurator = new SQLExternalFormatterConfigurationPage();
} else {
curConfigurator = GeneralUtils.adapt(sqlFormatter, SQLFormatterConfigurator.class);
}
if (curConfigurator instanceof IDialogPage) {
curConfigurator.configure(selFormatter, () -> {
curConfigurator.saveSettings(getTargetPreferenceStore());
formatSQL();
});
((IDialogPage) curConfigurator).createControl(formatterConfigPlaceholder);
curConfigurator.loadSettings(getTargetPreferenceStore());
}
} catch (DBException e) {
log.error("Error creating formatter configurator", e);
setMessage(CommonUtils.toString(e.getMessage()), SWT.ICON_ERROR);
return;
}
((Composite) getControl()).layout(true, true);
if (isDataSourcePreferencePage()) {
enablePreferenceContent(useDataSourceSettings());
}
}
use of org.jkiss.dbeaver.model.sql.registry.SQLFormatterDescriptor 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.model.sql.registry.SQLFormatterDescriptor 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.model.sql.registry.SQLFormatterDescriptor in project dbeaver by dbeaver.
the class PrefPageSQLFormat method showFormatterSettings.
private void showFormatterSettings() {
if (curConfigurator != null) {
curConfigurator.saveSettings(getTargetPreferenceStore());
}
UIUtils.disposeChildControls(formatterConfigPlaceholder);
SQLFormatterDescriptor selFormatter = formatters.get(formatterSelector.getSelectionIndex());
try {
SQLFormatter sqlFormatter = selFormatter.createFormatter();
// FIXME: for now we support only predefined list of formatters
if (sqlFormatter instanceof SQLFormatterTokenized) {
curConfigurator = new SQLTokenizedFormatterConfigurationPage();
} else if (sqlFormatter instanceof SQLFormatterExternal) {
curConfigurator = new SQLExternalFormatterConfigurationPage();
} else {
curConfigurator = GeneralUtils.adapt(sqlFormatter, SQLFormatterConfigurator.class);
}
if (curConfigurator instanceof IDialogPage) {
curConfigurator.configure(selFormatter, () -> {
curConfigurator.saveSettings(getTargetPreferenceStore());
formatSQL();
});
((IDialogPage) curConfigurator).createControl(formatterConfigPlaceholder);
curConfigurator.loadSettings(getTargetPreferenceStore());
}
} catch (DBException e) {
log.error("Error creating formatter configurator", e);
setMessage(CommonUtils.toString(e.getMessage()), SWT.ICON_ERROR);
return;
}
((Composite) getControl()).layout(true, true);
if (isDataSourcePreferencePage()) {
enablePreferenceContent(useDataSourceSettings());
}
}
Aggregations