Я пытаюсь получить от этого до этого .Насколько я понимаю, лучше всего это сделать с помощью GridLayout, однако я даже не могу добиться изменения в окне вывода, и я медленно, но верно схожу с ума.Это метод, в котором создается текущий диалог:
private MTestScript letUserSelectTestScript(final Collection<MTestScript> testScripts) {
return DialogUtils.openWithDeadLockCheck(new IRunnableWithResult<MTestScript>() {
@Override
public IResultStatus<MTestScript> run(Shell shell, IProgressMonitor progressMonitor) {
ILabelProvider labelProvider = ProviderManager.getProviderManager().getLabelProvider(getOutermostPackageOfMetric());
TestElementListSelectionDialog selectionDialog = new TestElementListSelectionDialog(shell, labelProvider, new ArrayContentProvider(), testScripts) {
@Override
public void updateOKStatus() {
if (getSelection() == null || getSelection().isEmpty()) {
updateStatus(new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, IStatus.ERROR, "Please make a selection.", null)); //$NON-NLS-1$
} else {
updateStatus(null);
}
}
@Override
protected void updateButtonsEnableState(IStatus status) {
super.updateButtonsEnableState(status == null ? Status.OK_STATUS : status);
}
};
selectionDialog.setTitle("Handling Inputs (1/2)"); //$NON-NLS-1$
selectionDialog.setMessage("Please select the script to use..."); //$NON-NLS-1$
selectionDialog.create();
int result = selectionDialog.open();
if (Dialog.OK == result) {
return ResultStatus.createOK((MTestScript) selectionDialog.getFirstResult());
}
return ResultStatus.createCancel(null);
}
});
}
Моя последняя попытка модификации TestElementSelectionDialog (не обращайте на это большого внимания, поскольку я в основном стреляю вслепую, надеясь, что что-то произойдет):
private class TestElementListSelectionDialog extends ElementListSelectionDialog {
public TestElementListSelectionDialog(Shell arg0, ILabelProvider arg1, IStructuredContentProvider arg2, Collection<?> arg3) {
super(arg0, arg1, arg2, arg3);
testInputDialog = new InputDialog(arg0, "dialogTitle", "dialogMessage", "initialValue", null);
arg0.layout();
}
InputDialog testInputDialog;
//GridLayout gridLayout = new GridLayout(4, 2);
RowLayout rowLayout = new RowLayout();
@Override
public ColumnViewer createViewer(Composite parent) {
ColumnViewer out = super.createViewer(parent);
return out;
}
}
Я подозреваю, что что-то должно быть сделано в createViewer, однако я не могу разобраться с этим.Оригинальный createViewer:
public ColumnViewer createViewer(Composite parent) {
_tableViewer = new TableViewer(parent, getViewerStyle());
GridData data = new GridData();
data.widthHint = convertWidthInCharsToPixels(getWidth());
data.heightHint = convertHeightInCharsToPixels(getHeight());
data.grabExcessVerticalSpace = true;
data.grabExcessHorizontalSpace = true;
data.horizontalAlignment = GridData.FILL;
data.verticalAlignment = GridData.FILL;
final Table tree = _tableViewer.getTable();
tree.setLayoutData(data);
tree.setFont(parent.getFont());
setLabelProviderToTableViewer();
_tableViewer.setContentProvider(getContentProvider());
_tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
ISelection selection = event.getSelection();
if (selection instanceof StructuredSelection) {
StructuredSelection actualSelection = (StructuredSelection) selection;
if (!actualSelection.isEmpty()) {
updateOKStatus();
}
}
}
});
_tableViewer.setSorter(new ViewerSorterForModelElements(false));
_tableViewer.setUseHashlookup(true);
_tableViewer.setInput(getElementsToDisplay(getInputArtefacts()));
StructuredSelection selection = new StructuredSelection(getInitialElementSelections());
_tableViewer.setSelection(selection, true);
return _tableViewer;
}
Мне бы очень помогло, если бы кто-нибудь сказал мне, как сделать даже небольшое изменение в окне.Как только я смогу немного это изменить, я смогу это понять.