mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 352262 - Link to Name Style preference page from Generate Getters
and Setters page
This commit is contained in:
parent
114952f64a
commit
11963d3ec5
6 changed files with 90 additions and 7 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2008, 2009 Institute for Software, HSR Hochschule fuer Technik
|
* Copyright (c) 2008, 2011 Institute for Software, HSR Hochschule fuer Technik
|
||||||
* Rapperswil, University of applied sciences and others
|
* Rapperswil, University of applied sciences and others
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
@ -14,6 +14,10 @@ package org.eclipse.cdt.internal.ui.refactoring.gettersandsetters;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.SortedSet;
|
import java.util.SortedSet;
|
||||||
|
|
||||||
|
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
||||||
|
import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
|
||||||
|
import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
|
||||||
|
import org.eclipse.core.runtime.preferences.InstanceScope;
|
||||||
import org.eclipse.jface.viewers.CheckStateChangedEvent;
|
import org.eclipse.jface.viewers.CheckStateChangedEvent;
|
||||||
import org.eclipse.jface.viewers.ICheckStateListener;
|
import org.eclipse.jface.viewers.ICheckStateListener;
|
||||||
import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
|
import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
|
||||||
|
@ -25,12 +29,17 @@ import org.eclipse.swt.layout.GridData;
|
||||||
import org.eclipse.swt.layout.GridLayout;
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
import org.eclipse.swt.widgets.Button;
|
import org.eclipse.swt.widgets.Button;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
|
import org.eclipse.swt.widgets.Link;
|
||||||
import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer;
|
import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer;
|
||||||
|
import org.eclipse.ui.dialogs.PreferencesUtil;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.internal.ui.preferences.NameStylePreferencePage;
|
||||||
import org.eclipse.cdt.internal.ui.refactoring.gettersandsetters.GetterSetterContext.FieldWrapper;
|
import org.eclipse.cdt.internal.ui.refactoring.gettersandsetters.GetterSetterContext.FieldWrapper;
|
||||||
import org.eclipse.cdt.internal.ui.refactoring.gettersandsetters.GetterSetterInsertEditProvider.AccessorKind;
|
import org.eclipse.cdt.internal.ui.refactoring.gettersandsetters.GetterSetterInsertEditProvider.AccessorKind;
|
||||||
|
|
||||||
public class GenerateGettersAndSettersInputPage extends UserInputWizardPage {
|
public class GenerateGettersAndSettersInputPage extends UserInputWizardPage implements IPreferenceChangeListener {
|
||||||
private GetterSetterContext context;
|
private GetterSetterContext context;
|
||||||
private ContainerCheckedTreeViewer variableSelectionView;
|
private ContainerCheckedTreeViewer variableSelectionView;
|
||||||
private GetterSetterLabelProvider labelProvider;
|
private GetterSetterLabelProvider labelProvider;
|
||||||
|
@ -38,6 +47,9 @@ public class GenerateGettersAndSettersInputPage extends UserInputWizardPage {
|
||||||
public GenerateGettersAndSettersInputPage(GetterSetterContext context) {
|
public GenerateGettersAndSettersInputPage(GetterSetterContext context) {
|
||||||
super(Messages.GettersAndSetters_Name);
|
super(Messages.GettersAndSetters_Name);
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
IEclipsePreferences node = InstanceScope.INSTANCE.getNode(CUIPlugin.PLUGIN_ID);
|
||||||
|
// We are listening for changes in the Name Style preferences
|
||||||
|
node.addPreferenceChangeListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createControl(Composite parent) {
|
public void createControl(Composite parent) {
|
||||||
|
@ -59,6 +71,8 @@ public class GenerateGettersAndSettersInputPage extends UserInputWizardPage {
|
||||||
final Button placeImplemetation = new Button(comp, SWT.CHECK);
|
final Button placeImplemetation = new Button(comp, SWT.CHECK);
|
||||||
placeImplemetation.setText(Messages.GenerateGettersAndSettersInputPage_PlaceImplHeader);
|
placeImplemetation.setText(Messages.GenerateGettersAndSettersInputPage_PlaceImplHeader);
|
||||||
gd = new GridData();
|
gd = new GridData();
|
||||||
|
gd.horizontalSpan = 2;
|
||||||
|
gd.heightHint = 40;
|
||||||
placeImplemetation.setLayoutData(gd);
|
placeImplemetation.setLayoutData(gd);
|
||||||
placeImplemetation.setSelection(context.isImplementationInHeader());
|
placeImplemetation.setSelection(context.isImplementationInHeader());
|
||||||
placeImplemetation.addSelectionListener(new SelectionAdapter() {
|
placeImplemetation.addSelectionListener(new SelectionAdapter() {
|
||||||
|
@ -68,6 +82,21 @@ public class GenerateGettersAndSettersInputPage extends UserInputWizardPage {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Link link= new Link(comp, SWT.WRAP);
|
||||||
|
link.setText(Messages.GenerateGettersAndSettersInputPage_LinkDescription);
|
||||||
|
link.addSelectionListener(new SelectionAdapter() {
|
||||||
|
@Override
|
||||||
|
public void widgetSelected(SelectionEvent e) {
|
||||||
|
String id = NameStylePreferencePage.PREF_ID;
|
||||||
|
PreferencesUtil.createPreferenceDialogOn(getShell(), id, new String [] { id }, null).open();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
link.setToolTipText(Messages.GenerateGettersAndSettersInputPage_LinkTooltip);
|
||||||
|
|
||||||
|
gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
|
||||||
|
gd.grabExcessHorizontalSpace = true;
|
||||||
|
link.setLayoutData(gd);
|
||||||
|
|
||||||
setControl(comp);
|
setControl(comp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,4 +218,15 @@ public class GenerateGettersAndSettersInputPage extends UserInputWizardPage {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void preferenceChange(PreferenceChangeEvent event) {
|
||||||
|
if (variableSelectionView.getTree().isDisposed()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GetterSetterNameGenerator.getGenerateGetterSettersPreferenceKeys().contains(event.getKey())) {
|
||||||
|
context.refresh();
|
||||||
|
variableSelectionView.refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,6 +79,17 @@ public class GetterSetterContext implements ITreeContentProvider {
|
||||||
return getWrappedFields().toArray();
|
return getWrappedFields().toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void refresh() {
|
||||||
|
// We only recreate the function declarations instead of recreating GetterSetterInsertEditProviders.
|
||||||
|
// That way, selectedFunctions is still valid. Also, the objects inside the TreeViewer are still the same
|
||||||
|
// which is convenient because that way we don't need to save then restore the collapsed/expanded+checked/unchecked state of the TreeViewer.
|
||||||
|
for (FieldWrapper wrapper : wrappedFields) {
|
||||||
|
for (GetterSetterInsertEditProvider provider : wrapper.childNodes) {
|
||||||
|
provider.createFunctionDeclaration();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,15 @@ public class GetterSetterInsertEditProvider implements Comparable<GetterSetterIn
|
||||||
|
|
||||||
public GetterSetterInsertEditProvider(IASTName fieldName, IASTSimpleDeclaration fieldDeclaration,
|
public GetterSetterInsertEditProvider(IASTName fieldName, IASTSimpleDeclaration fieldDeclaration,
|
||||||
AccessorKind kind) {
|
AccessorKind kind) {
|
||||||
switch (kind) {
|
this.kind = kind;
|
||||||
|
this.fieldName = fieldName;
|
||||||
|
this.fieldDeclaration = fieldDeclaration;
|
||||||
|
|
||||||
|
createFunctionDeclaration();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createFunctionDeclaration() {
|
||||||
|
switch (this.kind) {
|
||||||
case GETTER:
|
case GETTER:
|
||||||
this.functionDeclaration = FunctionFactory.createGetterDeclaration(fieldName, fieldDeclaration);
|
this.functionDeclaration = FunctionFactory.createGetterDeclaration(fieldName, fieldDeclaration);
|
||||||
break;
|
break;
|
||||||
|
@ -44,10 +52,6 @@ public class GetterSetterInsertEditProvider implements Comparable<GetterSetterIn
|
||||||
this.functionDeclaration = FunctionFactory.createSetterDeclaration(fieldName, fieldDeclaration);
|
this.functionDeclaration = FunctionFactory.createSetterDeclaration(fieldName, fieldDeclaration);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.kind = kind;
|
|
||||||
this.fieldName = fieldName;
|
|
||||||
this.fieldDeclaration = fieldDeclaration;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,6 +10,9 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.refactoring.gettersandsetters;
|
package org.eclipse.cdt.internal.ui.refactoring.gettersandsetters;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.core.runtime.Platform;
|
import org.eclipse.core.runtime.Platform;
|
||||||
import org.eclipse.core.runtime.preferences.IPreferencesService;
|
import org.eclipse.core.runtime.preferences.IPreferencesService;
|
||||||
|
|
||||||
|
@ -33,6 +36,27 @@ public class GetterSetterNameGenerator {
|
||||||
private GetterSetterNameGenerator() {
|
private GetterSetterNameGenerator() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Set<String> generateGetterSettersPreferenceKeys = new HashSet<String>();
|
||||||
|
static {
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_GETTER_CAPITALIZATION);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_GETTER_WORD_DELIMITER);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_GETTER_PREFIX_FOR_BOOLEAN);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_GETTER_PREFIX);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_GETTER_SUFFIX);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_SETTER_CAPITALIZATION);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_SETTER_WORD_DELIMITER);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_SETTER_PREFIX);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_SETTER_SUFFIX);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_VARIABLE_CAPITALIZATION);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_VARIABLE_WORD_DELIMITER);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_VARIABLE_PREFIX);
|
||||||
|
generateGetterSettersPreferenceKeys.add(PreferenceConstants.NAME_STYLE_VARIABLE_SUFFIX);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Set<String> getGenerateGetterSettersPreferenceKeys() {
|
||||||
|
return generateGetterSettersPreferenceKeys;
|
||||||
|
}
|
||||||
|
|
||||||
public static String generateGetterName(IASTName fieldName) {
|
public static String generateGetterName(IASTName fieldName) {
|
||||||
IPreferencesService preferences = Platform.getPreferencesService();
|
IPreferencesService preferences = Platform.getPreferencesService();
|
||||||
int capitalization = preferences.getInt(CUIPlugin.PLUGIN_ID,
|
int capitalization = preferences.getInt(CUIPlugin.PLUGIN_ID,
|
||||||
|
|
|
@ -20,6 +20,8 @@ public final class Messages extends NLS {
|
||||||
public static String GenerateGettersAndSettersInputPage_SelectAll;
|
public static String GenerateGettersAndSettersInputPage_SelectAll;
|
||||||
public static String GenerateGettersAndSettersInputPage_SelectGetters;
|
public static String GenerateGettersAndSettersInputPage_SelectGetters;
|
||||||
public static String GenerateGettersAndSettersInputPage_SelectSetters;
|
public static String GenerateGettersAndSettersInputPage_SelectSetters;
|
||||||
|
public static String GenerateGettersAndSettersInputPage_LinkDescription;
|
||||||
|
public static String GenerateGettersAndSettersInputPage_LinkTooltip;
|
||||||
public static String GenerateGettersAndSettersRefactoring_NoCassDefFound;
|
public static String GenerateGettersAndSettersRefactoring_NoCassDefFound;
|
||||||
public static String GenerateGettersAndSettersRefactoring_NoFields;
|
public static String GenerateGettersAndSettersRefactoring_NoFields;
|
||||||
public static String GenerateGettersAndSettersRefactoring_NoImplFile;
|
public static String GenerateGettersAndSettersRefactoring_NoImplFile;
|
||||||
|
|
|
@ -16,6 +16,8 @@ GenerateGettersAndSettersInputPage_PlaceImplHeader=Place implementation in heade
|
||||||
GenerateGettersAndSettersInputPage_SelectAll=Select All
|
GenerateGettersAndSettersInputPage_SelectAll=Select All
|
||||||
GenerateGettersAndSettersInputPage_SelectGetters=Select Getters
|
GenerateGettersAndSettersInputPage_SelectGetters=Select Getters
|
||||||
GenerateGettersAndSettersInputPage_SelectSetters=Select Setters
|
GenerateGettersAndSettersInputPage_SelectSetters=Select Setters
|
||||||
|
GenerateGettersAndSettersInputPage_LinkDescription=The names of getters and setters may be configured on the <a>Name Style</a> preference page.
|
||||||
|
GenerateGettersAndSettersInputPage_LinkTooltip=Show the name style preferences.
|
||||||
GenerateGettersAndSettersRefactoring_NoCassDefFound=No class definition found
|
GenerateGettersAndSettersRefactoring_NoCassDefFound=No class definition found
|
||||||
GenerateGettersAndSettersRefactoring_NoFields=The class does not contain any fields.
|
GenerateGettersAndSettersRefactoring_NoFields=The class does not contain any fields.
|
||||||
GenerateGettersAndSettersRefactoring_NoImplFile=No implementation file found. Inserting definition into the header file.
|
GenerateGettersAndSettersRefactoring_NoImplFile=No implementation file found. Inserting definition into the header file.
|
||||||
|
|
Loading…
Add table
Reference in a new issue