Skip to content

Commit

Permalink
Improve preference pages
Browse files Browse the repository at this point in the history
* disable help button in custom dialogs/wizards
* disable "restore default" buttons where resetting preferences to
defaults is not implemented
* disable finish button in "add source" wizard if selection is empty
* replace custom "remap" dialog by standard JFace selection dialog
  • Loading branch information
Bananeweizen authored and RoiSoleil committed Dec 28, 2023
1 parent 3d4bebb commit 4bbf245
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 84 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.moreunit.mock.preferences;

import static org.moreunit.mock.config.MockModule.$;

import org.eclipse.core.resources.IProject;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
Expand All @@ -14,8 +16,6 @@
import org.eclipse.ui.dialogs.PropertyPage;
import org.moreunit.core.log.Logger;

import static org.moreunit.mock.config.MockModule.$;

public class MainPropertyPage extends PropertyPage
{
private final Preferences preferences;
Expand All @@ -34,6 +34,7 @@ public MainPropertyPage(Preferences preferences, TemplateStyleSelector templateS
this.preferences = preferences;
this.templateStyleSelector = templateStyleSelector;
this.logger = logger;
noDefaultButton();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.moreunit.elements.SourceFolderMapping;

Expand All @@ -24,11 +23,12 @@ public class AddUnitSourceFolderWizard extends Wizard

private UnitSourceFolderBlock unitSourceFolderBlock;


public AddUnitSourceFolderWizard(IJavaProject javaProject, UnitSourceFolderBlock unitSourceFolderBlock)
{
this.javaProject = javaProject;
this.unitSourceFolderBlock = unitSourceFolderBlock;
setWindowTitle("MoreUnit test source folders");
setHelpAvailable(false);
}

@Override
Expand All @@ -46,12 +46,10 @@ public boolean performFinish()
}

@Override
public void createPageControls(Composite pageContainer)
public void addPages()
{
setWindowTitle("MoreUnit test source folders");
page = new AddUnitSourceFolderWizardPage();
addPage(page);
super.createPageControls(pageContainer);
}

public void open(Shell parentShell)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ protected AddUnitSourceFolderWizardPage()
super("Add Unit Source Folder");
setTitle("Add Unit Source Folder");
setDescription("Please select source folders to add");
setPageComplete(false);
}

public void createControl(Composite parent)
Expand Down Expand Up @@ -83,6 +84,8 @@ else if(! isChecked && isNoSourceFolderInProjectSelected(javaProject))
else if(! isChecked && ! isNoSourceFolderInProjectSelected(javaProject))
checkboxTreeViewer.setGrayChecked(javaProject, true);
}

setPageComplete(checkboxTreeViewer.getCheckedElements().length > 0);
}

private boolean areAllSourceFolderInProjectSelected(Object javaProjectElement)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ public class MoreUnitPropertyPage extends PropertyPage
private UnitSourceFolderBlock firstTabUnitSourceFolder;
private OtherMoreunitPropertiesBlock secondTabOtherProperties;

public MoreUnitPropertyPage()
{
noDefaultButton();
}

@Override
protected Control createContents(Composite parent)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,95 +3,38 @@
*/
package org.moreunit.properties;

import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;

import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.ui.JavaElementLabelProvider;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.ListSelectionDialog;
import org.moreunit.elements.SourceFolderMapping;
import org.moreunit.util.PluginTools;

/**
* @author vera 15.03.2008 19:38:50
*/
public class SourceFolderMappingDialog extends Dialog implements ICheckStateListener, ITreeContentProvider
public class SourceFolderMappingDialog
{

private SourceFolderMapping sourceFolderMapping;
private CheckboxTreeViewer checkboxTreeViewer;
private UnitSourceFolderBlock unitSourceFolderBlock;

protected SourceFolderMappingDialog(UnitSourceFolderBlock unitSourceFolderBlock, Shell parentShell, SourceFolderMapping sourceFolderMapping)
{
super(parentShell);

this.unitSourceFolderBlock = unitSourceFolderBlock;
this.sourceFolderMapping = sourceFolderMapping;
}

@Override
protected Control createDialogArea(Composite parent)
private SourceFolderMappingDialog()
{
checkboxTreeViewer = new CheckboxTreeViewer(parent);
checkboxTreeViewer.addCheckStateListener(this);
checkboxTreeViewer.setLabelProvider(new JavaElementLabelProvider());
checkboxTreeViewer.setContentProvider(this);
checkboxTreeViewer.setInput(this);

return parent;
// utility class
}

public void checkStateChanged(CheckStateChangedEvent event)
public static void open(UnitSourceFolderBlock unitSourceFolderBlock, Shell parentShell, SourceFolderMapping sourceFolderMapping)
{
var input = PluginTools.getAllSourceFolderFromProject(sourceFolderMapping.getJavaProject()).toArray();
var selected = sourceFolderMapping.getSourceFolderList().toArray();
var title = "Mapped folders";
var message = "Select mapped source folders";
var dialog = ListSelectionDialog.of(input).preselect(selected).title(title).message(message).labelProvider(new JavaElementLabelProvider()).create(parentShell);
if(dialog.open() != Window.OK || dialog.getResult() == null)
{
return;
}

var result = Arrays.stream(dialog.getResult()).filter(IPackageFragmentRoot.class::isInstance).map(IPackageFragmentRoot.class::cast).toList();
unitSourceFolderBlock.handleSourceDialogMappingFinished(sourceFolderMapping, result);
}

public Object[] getChildren(Object parentElement)
{
return null;
}

public Object getParent(Object element)
{
return null;
}

public boolean hasChildren(Object element)
{
return false;
}

public Object[] getElements(Object inputElement)
{
return PluginTools.getAllSourceFolderFromProject(sourceFolderMapping.getJavaProject()).toArray();
}

public void dispose()
{
}

public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
{
}

@Override
protected void okPressed()
{
Object[] checkedFolder = checkboxTreeViewer.getCheckedElements();
List<IPackageFragmentRoot> asList = new ArrayList<IPackageFragmentRoot>();
for(Object elem : checkedFolder) asList.add((IPackageFragmentRoot) elem);
if(checkedFolder != null && checkedFolder.length > 0)
unitSourceFolderBlock.handleSourceDialogMappingFinished(sourceFolderMapping, asList);

super.okPressed();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ private Object getSelectedObject()
private void mappingButtonClicked()
{
TreeSelection selection = (TreeSelection) sourceFolderTree.getSelection();
(new SourceFolderMappingDialog(this, propertyPage.getShell(), (SourceFolderMapping) selection.getFirstElement())).open();
SourceFolderMappingDialog.open(this, propertyPage.getShell(), (SourceFolderMapping) selection.getFirstElement());
}

public void handlePerformFinishFromAddUnitSourceFolderWizard(List<SourceFolderMapping> mappingsToAdd)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.moreunit.properties;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

import org.eclipse.core.resources.IProject;
Expand Down Expand Up @@ -97,7 +98,7 @@ private List<IJavaProject> getRelevantJavaProjectsInWorkspace()
}
}

return allJavaProjectsInWorkspace;
return allJavaProjectsInWorkspace.stream().sorted(Comparator.comparing((IJavaProject project) -> project.getElementName(), String.CASE_INSENSITIVE_ORDER)).toList();
}

/**
Expand Down

0 comments on commit 4bbf245

Please sign in to comment.