1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-26 02:15:31 +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:
* Andrew Ferguson (Symbian) - Initial implementation
* 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;
@ -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.ui.text.doctools.IDocCommentOwner;
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
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.
* @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 {
protected Combo fCombo;
protected IDocCommentOwner fOwners[], fInitialOwner;
@ -89,17 +90,4 @@ public class DocCommentOwnerCombo extends Composite {
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:
* Andrew Ferguson (Symbian) - Initial implementation
* 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;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.cdt.core.options.OptionMetadata;
import org.eclipse.cdt.core.options.OptionStorage;
import org.eclipse.cdt.doxygen.DoxygenMetadata;
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.utils.ui.controls.ControlFactory;
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.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
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.
*/
public class DocCommentOwnerComposite extends Composite {
/**
* @deprecated will throw {@link NullPointerException} on attempt to access
*/
@Deprecated
protected DocCommentOwnerCombo fDocCombo;
protected Label desc, comboLabel;
protected Label desc;
protected Label comboLabel;
protected Group group;
private Combo combo;
private final IDocCommentOwner fOwners[];
private final Map<OptionMetadata<Boolean>, Button> buttons;
public DocCommentOwnerComposite(Composite parent, IDocCommentOwner initialOwner, String description, String label) {
super(parent, SWT.NONE);
fOwners = getNontestOwners();
buttons = new LinkedHashMap<>();
GridLayout gl = new GridLayout();
gl.marginHeight = gl.marginWidth = 0;
@ -66,12 +79,42 @@ public class DocCommentOwnerComposite extends Composite {
comboLabel = new Label(group, SWT.NONE);
comboLabel.setText(label);
combo = createCombo(group, initialOwner);
combo.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> recheckButtons()));
selectDocumentOwner(initialOwner, combo);
}
fDocCombo = new DocCommentOwnerCombo(group, SWT.NONE, initialOwner) {
};
gd = GridDataFactory.fillDefaults().grab(true, false).create();
fDocCombo.setLayoutData(gd);
fDocCombo.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> recheckButtons()));
private Combo createCombo(Composite parent, IDocCommentOwner initialOwner) {
String[] items = new String[fOwners.length + 1];
items[0] = DialogsMessages.DocCommentOwnerCombo_None;
for (int i = 0; i < fOwners.length; i++) {
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() {
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) {
desc.setEnabled(enabled);
comboLabel.setEnabled(enabled);
fDocCombo.setEnabled(enabled);
combo.setEnabled(enabled);
group.setEnabled(enabled);
recheckButtons();
}
void recheckButtons() {
boolean doxygenEnabled = fDocCombo.isEnabled() && DocCommentOwnerManager.DOXYGEN_CDT_DOC_ONWER_ID
.equals(fDocCombo.getSelectedDocCommentOwner().getID());
boolean doxygenEnabled = combo.isEnabled()
&& DocCommentOwnerManager.DOXYGEN_CDT_DOC_ONWER_ID.equals(getSelectedDocCommentOwner().getID());
buttons.values().forEach(b -> b.setEnabled(doxygenEnabled));
}