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:
parent
5e423d21a9
commit
13ddacb772
2 changed files with 58 additions and 26 deletions
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue