PT #165419026: Hyperlinks in XML config files
This commit is contained in:
@@ -109,9 +109,21 @@
|
||||
<extension
|
||||
point="org.eclipse.ui.preferencePages">
|
||||
<page
|
||||
category="org.springframework.tooling.ls.eclipse.commons.console.preferences"
|
||||
class="org.springframework.tooling.boot.ls.BootLanguageServerPreferencesPage"
|
||||
category="org.springframework.tooling.boot.ls.preferences"
|
||||
class="org.springframework.tooling.boot.ls.BootJavaPreferencesPage"
|
||||
id="org.springframework.tooling.boot.java.ls.preferences"
|
||||
name="Spring Boot Java">
|
||||
</page>
|
||||
<page
|
||||
category="org.springframework.tooling.boot.ls.preferences"
|
||||
class="org.springframework.tooling.boot.ls.XmlConfigPreferencePage"
|
||||
id="org.springframework.tooling.boot.xml.ls.preferences"
|
||||
name="Spring XML Config">
|
||||
</page>
|
||||
<page
|
||||
category="org.springframework.tooling.ls.eclipse.commons.console.preferences"
|
||||
class="org.springframework.tooling.boot.ls.SpringBootLanguageServerPreferencePage"
|
||||
id="org.springframework.tooling.boot.ls.preferences"
|
||||
name="Spring Boot Language Server">
|
||||
</page>
|
||||
</extension>
|
||||
|
||||
@@ -12,18 +12,12 @@ package org.springframework.tooling.boot.ls;
|
||||
|
||||
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
||||
import org.eclipse.core.runtime.preferences.InstanceScope;
|
||||
import org.eclipse.jface.layout.GridDataFactory;
|
||||
import org.eclipse.jface.preference.BooleanFieldEditor;
|
||||
import org.eclipse.jface.preference.FieldEditorPreferencePage;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.jface.preference.StringFieldEditor;
|
||||
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Group;
|
||||
import org.eclipse.ui.IWorkbench;
|
||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||
import org.springframework.tooling.ls.eclipse.commons.LanguageServerCommonsActivator;
|
||||
@@ -35,11 +29,7 @@ import org.springframework.tooling.ls.eclipse.commons.preferences.PreferenceCons
|
||||
* @author Alex Boyko
|
||||
*
|
||||
*/
|
||||
public class BootLanguageServerPreferencesPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
|
||||
|
||||
public BootLanguageServerPreferencesPage() {
|
||||
super(GRID);
|
||||
}
|
||||
public class BootJavaPreferencesPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
|
||||
|
||||
/**
|
||||
* Starts a preference change listener that keeps code mining preferences in sync with
|
||||
@@ -84,48 +74,22 @@ public class BootLanguageServerPreferencesPage extends FieldEditorPreferencePage
|
||||
setPreferenceStore(BootLanguageServerPlugin.getDefault().getPreferenceStore());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void adjustGridLayout() {
|
||||
// Keep empty
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createFieldEditors() {
|
||||
final IPreferenceStore commonsLsPrefs = LanguageServerCommonsActivator.getInstance().getPreferenceStore();
|
||||
|
||||
Composite contents = new Composite(getFieldEditorParent(), SWT.NONE);
|
||||
GridData gd = new GridData(GridData.FILL_BOTH);
|
||||
contents.setLayoutData(gd);
|
||||
contents.setLayout(new GridLayout());
|
||||
Composite fieldEditorParent = getFieldEditorParent();
|
||||
|
||||
Group liveBeansGroup = new Group(contents, SWT.NONE);
|
||||
liveBeansGroup.setText("Spring Boot Live Beans");
|
||||
liveBeansGroup.setLayout(new GridLayout(1, false));
|
||||
liveBeansGroup.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
|
||||
|
||||
addField(new BooleanFieldEditor(Constants.PREF_BOOT_HINTS, "Live Boot Hint Decorators", liveBeansGroup));
|
||||
addField(new BooleanFieldEditor(PreferenceConstants.HIGHLIGHT_CODELENS_PREFS, "Highlights CodeLens", liveBeansGroup) {
|
||||
addField(new BooleanFieldEditor(Constants.PREF_SCAN_JAVA_TEST_SOURCES, "Scan Java test sources", fieldEditorParent));
|
||||
addField(new BooleanFieldEditor(Constants.PREF_BOOT_HINTS, "Live Boot Hint Decorators", fieldEditorParent));
|
||||
addField(new BooleanFieldEditor(PreferenceConstants.HIGHLIGHT_CODELENS_PREFS, "Highlights CodeLens", fieldEditorParent) {
|
||||
@Override
|
||||
public IPreferenceStore getPreferenceStore() {
|
||||
return commonsLsPrefs;
|
||||
}
|
||||
});
|
||||
addField(new BooleanFieldEditor(Constants.PREF_CHANGE_DETECTION, "Live Boot Change Detection", liveBeansGroup));
|
||||
addField(new BooleanFieldEditor(Constants.PREF_CHANGE_DETECTION, "Live Boot Change Detection", fieldEditorParent));
|
||||
|
||||
Group symbolGroup = new Group(contents, SWT.NONE);
|
||||
symbolGroup.setText("Spring Symbols");
|
||||
symbolGroup.setLayout(new GridLayout(1, false));
|
||||
symbolGroup.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
|
||||
|
||||
addField(new BooleanFieldEditor(Constants.PREF_SCAN_JAVA_TEST_SOURCES, "Scan Java test sources", symbolGroup));
|
||||
addField(new BooleanFieldEditor(Constants.PREF_SUPPORT_SPRING_XML_CONFIGS, "Scan Spring XML Config files (experimental)", symbolGroup));
|
||||
|
||||
Composite scanFoldersComposite = new Composite(symbolGroup, SWT.NONE);
|
||||
scanFoldersComposite.setFont(symbolGroup.getFont());
|
||||
scanFoldersComposite.setLayoutData(GridDataFactory.swtDefaults().span(2, 1).align(GridData.FILL, GridData.BEGINNING).grab(true, false).create());
|
||||
scanFoldersComposite.setLayout(new GridLayout(2, false));
|
||||
addField(new StringFieldEditor(Constants.PREF_XML_CONFIGS_SCAN_FOLDERS, "Scan Spring XML in folders:", scanFoldersComposite));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2017, 2018 Pivotal, Inc.
|
||||
* Copyright (c) 2017, 2019 Pivotal, Inc.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
@@ -45,7 +45,7 @@ public class BootLanguageServerPlugin extends AbstractUIPlugin {
|
||||
plugin = this;
|
||||
super.start(context);
|
||||
deactivateDuplicateKeybindings();
|
||||
BootLanguageServerPreferencesPage.manageCodeMiningPreferences();
|
||||
BootJavaPreferencesPage.manageCodeMiningPreferences();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,6 +21,8 @@ public class Constants {
|
||||
public static final String PREF_SUPPORT_SPRING_XML_CONFIGS = "boot-java.support-spring-xml-config.on";
|
||||
public static final String PREF_XML_CONFIGS_SCAN_FOLDERS = "boot-java.support-spring-xml-config.scan-folders-globs";
|
||||
public static final String PREF_SCAN_JAVA_TEST_SOURCES = "boot-java.scan-java-test-sources";
|
||||
public static final String PREF_XML_CONFIGS_HYPERLINKS = "boot-java.support-spring-xml-config.hyperlinks";
|
||||
public static final String PREF_XML_CONFIGS_CONTENT_ASSIST = "boot-java.support-spring-xml-config.content-assist";
|
||||
public static final String PREF_CHANGE_DETECTION = "boot-java.change-detection.on";
|
||||
|
||||
}
|
||||
|
||||
@@ -213,6 +213,8 @@ public class DelegatingStreamConnectionProvider implements StreamConnectionProvi
|
||||
bootHint.put("on", preferenceStore.getBoolean(Constants.PREF_BOOT_HINTS));
|
||||
supportXML.put("on", preferenceStore.getBoolean(Constants.PREF_SUPPORT_SPRING_XML_CONFIGS));
|
||||
supportXML.put("scan-folders-globs", preferenceStore.getString(Constants.PREF_XML_CONFIGS_SCAN_FOLDERS));
|
||||
supportXML.put("hyperlinks", preferenceStore.getString(Constants.PREF_XML_CONFIGS_HYPERLINKS));
|
||||
supportXML.put("content-assist", preferenceStore.getString(Constants.PREF_XML_CONFIGS_CONTENT_ASSIST));
|
||||
bootChangeDetection.put("on", preferenceStore.getBoolean(Constants.PREF_CHANGE_DETECTION));
|
||||
scanTestJavaSources.put("on", preferenceStore.getBoolean(Constants.PREF_SCAN_JAVA_TEST_SOURCES));
|
||||
|
||||
|
||||
@@ -29,6 +29,8 @@ public class PrefsInitializer extends AbstractPreferenceInitializer {
|
||||
IPreferenceStore preferenceStore = BootLanguageServerPlugin.getDefault().getPreferenceStore();
|
||||
preferenceStore.setDefault(Constants.PREF_BOOT_HINTS, true);
|
||||
preferenceStore.setDefault(Constants.PREF_SUPPORT_SPRING_XML_CONFIGS, false);
|
||||
preferenceStore.setDefault(Constants.PREF_XML_CONFIGS_HYPERLINKS, true);
|
||||
preferenceStore.setDefault(Constants.PREF_XML_CONFIGS_CONTENT_ASSIST, true);
|
||||
preferenceStore.setDefault(Constants.PREF_XML_CONFIGS_SCAN_FOLDERS, "**/src/main/**");
|
||||
preferenceStore.setDefault(Constants.PREF_CHANGE_DETECTION, false);
|
||||
preferenceStore.setDefault(Constants.PREF_SCAN_JAVA_TEST_SOURCES, false);
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2019 Pivotal, Inc.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* https://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Pivotal, Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.springframework.tooling.boot.ls;
|
||||
|
||||
import org.eclipse.jface.preference.PreferencePage;
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.ui.IWorkbench;
|
||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||
|
||||
public class SpringBootLanguageServerPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
|
||||
|
||||
public SpringBootLanguageServerPreferencePage() {
|
||||
}
|
||||
|
||||
public SpringBootLanguageServerPreferencePage(String title) {
|
||||
super(title);
|
||||
}
|
||||
|
||||
public SpringBootLanguageServerPreferencePage(String title, ImageDescriptor image) {
|
||||
super(title, image);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(IWorkbench workbench) {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Control createContents(Composite parent) {
|
||||
return new Composite(parent, SWT.NONE);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2019 Pivotal, Inc.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* https://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Pivotal, Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.springframework.tooling.boot.ls;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jface.layout.GridDataFactory;
|
||||
import org.eclipse.jface.preference.BooleanFieldEditor;
|
||||
import org.eclipse.jface.preference.FieldEditorPreferencePage;
|
||||
import org.eclipse.jface.preference.StringFieldEditor;
|
||||
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.ui.IWorkbench;
|
||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Alex Boyko
|
||||
*
|
||||
*/
|
||||
public class XmlConfigPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
|
||||
|
||||
private List<Runnable> updateXmlSettingControlsEnablement = Collections.emptyList();
|
||||
private BooleanFieldEditor enableEditor;
|
||||
|
||||
public XmlConfigPreferencePage() {
|
||||
super(GRID);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void adjustGridLayout() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(IWorkbench workbench) {
|
||||
setPreferenceStore(BootLanguageServerPlugin.getDefault().getPreferenceStore());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void propertyChange(PropertyChangeEvent event) {
|
||||
super.propertyChange(event);
|
||||
if (enableEditor == event.getSource()) {
|
||||
updateXmlSettingControlsEnablement.forEach(r -> r.run());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void performDefaults() {
|
||||
super.performDefaults();
|
||||
updateXmlSettingControlsEnablement.forEach(r -> r.run());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createFieldEditors() {
|
||||
Composite fieldEditorParent = getFieldEditorParent();
|
||||
final boolean xmlEnabled = getPreferenceStore().getBoolean(Constants.PREF_SUPPORT_SPRING_XML_CONFIGS);
|
||||
updateXmlSettingControlsEnablement = new ArrayList<>();
|
||||
|
||||
enableEditor = new BooleanFieldEditor(Constants.PREF_SUPPORT_SPRING_XML_CONFIGS, "Enable Spring XML Config files support", fieldEditorParent);
|
||||
addField(enableEditor);
|
||||
|
||||
Label label = new Label(fieldEditorParent, SWT.SEPARATOR | SWT.HORIZONTAL);
|
||||
label.setLayoutData(GridDataFactory.swtDefaults().grab(true, false).span(2, 1).align(SWT.FILL, SWT.BEGINNING).create());
|
||||
|
||||
Composite settingsComposite = new Composite(fieldEditorParent, SWT.NONE);
|
||||
settingsComposite.setLayoutData(GridDataFactory.swtDefaults().grab(true, true).align(SWT.FILL, SWT.BEGINNING).create());
|
||||
settingsComposite.setLayout(new GridLayout(1, false));
|
||||
|
||||
BooleanFieldEditor caFieldEditor = new BooleanFieldEditor(Constants.PREF_XML_CONFIGS_CONTENT_ASSIST, "Content Assist in editor", settingsComposite);
|
||||
addField(caFieldEditor);
|
||||
caFieldEditor.setEnabled(xmlEnabled, settingsComposite);
|
||||
updateXmlSettingControlsEnablement.add(() -> caFieldEditor.setEnabled(enableEditor.getBooleanValue(), settingsComposite));
|
||||
|
||||
BooleanFieldEditor hyperlinkEditor = new BooleanFieldEditor(Constants.PREF_XML_CONFIGS_HYPERLINKS, "Hyperlinks in editor", settingsComposite);
|
||||
addField(hyperlinkEditor);
|
||||
hyperlinkEditor.setEnabled(xmlEnabled, settingsComposite);
|
||||
updateXmlSettingControlsEnablement.add(() -> hyperlinkEditor.setEnabled(enableEditor.getBooleanValue(), settingsComposite));
|
||||
|
||||
Composite scanFoldersComposite = new Composite(settingsComposite, SWT.NONE);
|
||||
scanFoldersComposite.setFont(settingsComposite.getFont());
|
||||
scanFoldersComposite.setLayoutData(GridDataFactory.swtDefaults().span(2, 1).align(GridData.FILL, GridData.BEGINNING).grab(true, false).create());
|
||||
scanFoldersComposite.setLayout(new GridLayout(2, false));
|
||||
StringFieldEditor scanGlobEditor = new StringFieldEditor(Constants.PREF_XML_CONFIGS_SCAN_FOLDERS, "Scan XML in folders for symbols:", scanFoldersComposite);
|
||||
addField(scanGlobEditor);
|
||||
scanGlobEditor.setEnabled(xmlEnabled, scanFoldersComposite);
|
||||
updateXmlSettingControlsEnablement.add(() -> scanGlobEditor.setEnabled(enableEditor.getBooleanValue(), scanFoldersComposite));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -62,7 +62,8 @@ public class XMLContentAssistProposalComputer implements IAsyncCompletionProposa
|
||||
|
||||
@Override
|
||||
public List<IContextInformation> computeContextInformation(CompletionProposalInvocationContext context, IProgressMonitor monitor) {
|
||||
if (!BootLanguageServerPlugin.getDefault().getPreferenceStore().getBoolean(Constants.PREF_SUPPORT_SPRING_XML_CONFIGS)) {
|
||||
if (!BootLanguageServerPlugin.getDefault().getPreferenceStore().getBoolean(Constants.PREF_SUPPORT_SPRING_XML_CONFIGS)
|
||||
|| !BootLanguageServerPlugin.getDefault().getPreferenceStore().getBoolean(Constants.PREF_XML_CONFIGS_CONTENT_ASSIST)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user