1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-01 05:15:43 +02:00

Bug 559066 - Rework DocCommentOwnerCombo and mark it for deletion

Reworked usages of DocCommentOwnerCombo and marked it for deletion

Change-Id: Ic1bfbcdb12512be0d2eed1ae93d454d7f1e5668f
Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>
This commit is contained in:
Alexander Fedorov 2020-01-22 21:45:02 +03:00
parent 5e423d21a9
commit 13ddacb772
2 changed files with 58 additions and 26 deletions

View file

@ -11,7 +11,7 @@
* Contributors: * Contributors:
* Andrew Ferguson (Symbian) - Initial implementation * Andrew Ferguson (Symbian) - Initial implementation
* Marco Stornelli <marco.stornelli@gmail.com> - Bug 333134 * Marco Stornelli <marco.stornelli@gmail.com> - Bug 333134
* Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 333134 * Alexander Fedorov <alexander.fedorov@arsysop.ru> - ongoing support
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.ui.dialogs; package org.eclipse.cdt.ui.dialogs;
@ -22,7 +22,6 @@ import org.eclipse.cdt.internal.ui.text.doctools.DocCommentOwnerManager;
import org.eclipse.cdt.internal.ui.text.doctools.NullDocCommentOwner; import org.eclipse.cdt.internal.ui.text.doctools.NullDocCommentOwner;
import org.eclipse.cdt.ui.text.doctools.IDocCommentOwner; import org.eclipse.cdt.ui.text.doctools.IDocCommentOwner;
import org.eclipse.cdt.utils.ui.controls.ControlFactory; import org.eclipse.cdt.utils.ui.controls.ControlFactory;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
@ -33,7 +32,9 @@ import org.eclipse.swt.widgets.Composite;
* *
* @noextend This class is not intended to be subclassed by clients. * @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients. * @noinstantiate This class is not intended to be instantiated by clients.
* @deprecated scheduled for deletion, replaced with {@link Combo}
*/ */
@Deprecated
public class DocCommentOwnerCombo extends Composite { public class DocCommentOwnerCombo extends Composite {
protected Combo fCombo; protected Combo fCombo;
protected IDocCommentOwner fOwners[], fInitialOwner; protected IDocCommentOwner fOwners[], fInitialOwner;
@ -89,17 +90,4 @@ public class DocCommentOwnerCombo extends Composite {
fCombo.setEnabled(enabled); fCombo.setEnabled(enabled);
} }
/**
* @since 6.7
*/
public void addSelectionListener(SelectionListener listener) {
fCombo.addSelectionListener(listener);
}
/**
* @since 6.7
*/
public void removeSelectionListener(SelectionListener listener) {
fCombo.removeSelectionListener(listener);
}
} }

View file

@ -11,17 +11,20 @@
* Contributors: * Contributors:
* Andrew Ferguson (Symbian) - Initial implementation * Andrew Ferguson (Symbian) - Initial implementation
* Marco Stornelli <marco.stornelli@gmail.com> - Bug 333134 * Marco Stornelli <marco.stornelli@gmail.com> - Bug 333134
* Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 333134, Bug 559193 * Alexander Fedorov <alexander.fedorov@arsysop.ru> - ongoing support
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.ui.dialogs; package org.eclipse.cdt.ui.dialogs;
import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.eclipse.cdt.core.options.OptionMetadata; import org.eclipse.cdt.core.options.OptionMetadata;
import org.eclipse.cdt.core.options.OptionStorage; import org.eclipse.cdt.core.options.OptionStorage;
import org.eclipse.cdt.doxygen.DoxygenMetadata; import org.eclipse.cdt.doxygen.DoxygenMetadata;
import org.eclipse.cdt.internal.ui.text.doctools.DocCommentOwnerManager; import org.eclipse.cdt.internal.ui.text.doctools.DocCommentOwnerManager;
import org.eclipse.cdt.internal.ui.text.doctools.NullDocCommentOwner;
import org.eclipse.cdt.ui.text.doctools.IDocCommentOwner; import org.eclipse.cdt.ui.text.doctools.IDocCommentOwner;
import org.eclipse.cdt.utils.ui.controls.ControlFactory; import org.eclipse.cdt.utils.ui.controls.ControlFactory;
import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridDataFactory;
@ -30,6 +33,7 @@ import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData; 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.Combo;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Label;
@ -41,14 +45,23 @@ import org.eclipse.swt.widgets.Label;
* @noinstantiate This class is not intended to be instantiated by clients. * @noinstantiate This class is not intended to be instantiated by clients.
*/ */
public class DocCommentOwnerComposite extends Composite { public class DocCommentOwnerComposite extends Composite {
/**
* @deprecated will throw {@link NullPointerException} on attempt to access
*/
@Deprecated
protected DocCommentOwnerCombo fDocCombo; protected DocCommentOwnerCombo fDocCombo;
protected Label desc, comboLabel; protected Label desc;
protected Label comboLabel;
protected Group group; protected Group group;
private Combo combo;
private final IDocCommentOwner fOwners[];
private final Map<OptionMetadata<Boolean>, Button> buttons; private final Map<OptionMetadata<Boolean>, Button> buttons;
public DocCommentOwnerComposite(Composite parent, IDocCommentOwner initialOwner, String description, String label) { public DocCommentOwnerComposite(Composite parent, IDocCommentOwner initialOwner, String description, String label) {
super(parent, SWT.NONE); super(parent, SWT.NONE);
fOwners = getNontestOwners();
buttons = new LinkedHashMap<>(); buttons = new LinkedHashMap<>();
GridLayout gl = new GridLayout(); GridLayout gl = new GridLayout();
gl.marginHeight = gl.marginWidth = 0; gl.marginHeight = gl.marginWidth = 0;
@ -66,12 +79,42 @@ public class DocCommentOwnerComposite extends Composite {
comboLabel = new Label(group, SWT.NONE); comboLabel = new Label(group, SWT.NONE);
comboLabel.setText(label); comboLabel.setText(label);
combo = createCombo(group, initialOwner);
combo.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> recheckButtons()));
selectDocumentOwner(initialOwner, combo);
}
fDocCombo = new DocCommentOwnerCombo(group, SWT.NONE, initialOwner) { private Combo createCombo(Composite parent, IDocCommentOwner initialOwner) {
}; String[] items = new String[fOwners.length + 1];
gd = GridDataFactory.fillDefaults().grab(true, false).create(); items[0] = DialogsMessages.DocCommentOwnerCombo_None;
fDocCombo.setLayoutData(gd); for (int i = 0; i < fOwners.length; i++) {
fDocCombo.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> recheckButtons())); items[i + 1] = fOwners[i].getName();
}
Combo created = ControlFactory.createSelectCombo(parent, items, DialogsMessages.DocCommentOwnerCombo_None);
return created;
}
private void selectDocumentOwner(IDocCommentOwner owner, Combo created) {
for (int i = 0; i < fOwners.length; i++) {
if (fOwners[i].getID().equals(owner.getID())) {
created.select(i + 1);
return;
}
}
created.select(0);
}
/**
* @return the array of registered doc-comment owners, filtering out those from the
* test plug-in.
*/
private IDocCommentOwner[] getNontestOwners() {
List<IDocCommentOwner> result = new ArrayList<>();
for (IDocCommentOwner owner : DocCommentOwnerManager.getInstance().getRegisteredOwners()) {
if (owner.getID().indexOf(".test.") == -1) //$NON-NLS-1$
result.add(owner);
}
return result.toArray(new IDocCommentOwner[result.size()]);
} }
/** /**
@ -101,7 +144,8 @@ public class DocCommentOwnerComposite extends Composite {
} }
public IDocCommentOwner getSelectedDocCommentOwner() { public IDocCommentOwner getSelectedDocCommentOwner() {
return fDocCombo.getSelectedDocCommentOwner(); int index = combo.getSelectionIndex();
return index == 0 ? NullDocCommentOwner.INSTANCE : fOwners[index - 1];
} }
/** /**
@ -134,14 +178,14 @@ public class DocCommentOwnerComposite extends Composite {
public void setEnabled(boolean enabled) { public void setEnabled(boolean enabled) {
desc.setEnabled(enabled); desc.setEnabled(enabled);
comboLabel.setEnabled(enabled); comboLabel.setEnabled(enabled);
fDocCombo.setEnabled(enabled); combo.setEnabled(enabled);
group.setEnabled(enabled); group.setEnabled(enabled);
recheckButtons(); recheckButtons();
} }
void recheckButtons() { void recheckButtons() {
boolean doxygenEnabled = fDocCombo.isEnabled() && DocCommentOwnerManager.DOXYGEN_CDT_DOC_ONWER_ID boolean doxygenEnabled = combo.isEnabled()
.equals(fDocCombo.getSelectedDocCommentOwner().getID()); && DocCommentOwnerManager.DOXYGEN_CDT_DOC_ONWER_ID.equals(getSelectedDocCommentOwner().getID());
buttons.values().forEach(b -> b.setEnabled(doxygenEnabled)); buttons.values().forEach(b -> b.setEnabled(doxygenEnabled));
} }