Skip to content

Commit

Permalink
[JBIDE-22595] setting project comparator to model
Browse files Browse the repository at this point in the history
  • Loading branch information
adietish committed Jun 27, 2016
1 parent b258a47 commit 20b6448
Show file tree
Hide file tree
Showing 8 changed files with 96 additions and 28 deletions.
Expand Up @@ -36,6 +36,9 @@ private ConnectionsRegistryUtil() {
* @throws ConnectionNotFoundException if the connection can't be found
*/
public static Connection getConnectionFor(IResource resource) {
if (resource == null) {
return null;
}
Connection connection = safeGetConnectionFor(resource);
if(connection == null) {
throw new ConnectionNotFoundException(resource);
Expand Down
Expand Up @@ -50,6 +50,20 @@ public int compare(ObservableTreeItem o1, ObservableTreeItem o2) {
};
}

/**
* Returns a comparator that compares {@link IProject}s.
*
* @return
*/
public Comparator<IProject> asProjectComparator() {
return new Comparator<IProject>() {
@Override
public int compare(IProject o1, IProject o2) {
return ProjectViewerComparator.this.compare(null, o1, o2);
}
};
}

/**
* Compares only projects. Other objects always go after projects and equal to each other.
* When applied to sorting a mixed array, projects go to the beginning of the array and are sorted,
Expand Down
Expand Up @@ -120,7 +120,8 @@ private void createProjectControls(Composite parent, DataBindingContext dbc) {
projectsViewer.setInput(
BeanProperties.list(IProjectPageModel.PROPERTY_PROJECT_ITEMS).observe(model));
projectsViewer.setComparator(ProjectViewerComparator.createProjectTreeSorter(labelProvider));

model.setProjectsComparator(new ProjectViewerComparator(labelProvider).asItemComparator());

IObservableValue selectedProjectObservable = ViewerProperties.singleSelection().observe(projectsViewer);
Binding selectedProjectBinding =
ValueBindingBuilder.bind(selectedProjectObservable)
Expand Down
Expand Up @@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.openshift.internal.ui.wizard.common;

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

import org.jboss.tools.openshift.internal.ui.treeitem.ObservableTreeItem;
Expand All @@ -33,4 +34,6 @@ public interface IProjectAware
List<ObservableTreeItem> getProjectItems();

boolean hasProjects();

void setProjectsComparator(Comparator<ObservableTreeItem> comparator);
}
Expand Up @@ -406,7 +406,9 @@ private void createProjectControl(Composite parent, DataBindingContext dbc) {
cmboProject.setLabelProvider(labelProvider);
cmboProject.setInput(
BeanProperties.list(IDeployImagePageModel.PROPERTY_PROJECTS).observe(model));
cmboProject.setComparator(new ProjectViewerComparator(labelProvider));
ProjectViewerComparator comparator = new ProjectViewerComparator(labelProvider);
cmboProject.setComparator(comparator);
model.setProjectsComparator(comparator.asProjectComparator());

IObservableValue projectObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_PROJECT)
.observe(model);
Expand Down
Expand Up @@ -16,6 +16,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -93,18 +94,18 @@ public class DeployImageWizardModel
private String targetRegistryPassword;


private final List<String> imageNames = new ArrayList<>();

private static final DockerImage2OpenshiftResourceConverter dockerImage2OpenshiftResourceConverter = new DockerImage2OpenshiftResourceConverter();
private final List<String> imageNames = new ArrayList<>();
private List<IDockerConnection> dockerConnections = Arrays.asList(DockerConnectionManager.getInstance().getConnections());
private Comparator<IProject> projectsComparator;

public DeployImageWizardModel() {
envModel.addPropertyChangeListener(PROPERTY_ENVIRONMENT_VARIABLES, this);
envModel.addPropertyChangeListener(PROPERTY_SELECTED_ENVIRONMENT_VARIABLE, this);
DockerConnectionManager.getInstance().addConnectionManagerListener(this);
}

private List<IDockerConnection> dockerConnections = Arrays.asList(DockerConnectionManager.getInstance().getConnections());

@Override
public void dispose() {
super.dispose();
Expand All @@ -121,8 +122,7 @@ public void dispose() {
imagePorts = null;
}
}



@Override
public void propertyChange(PropertyChangeEvent evt) {
if(evt != null) {
Expand All @@ -134,7 +134,7 @@ public void propertyChange(PropertyChangeEvent evt) {
public void setOriginatedFromDockerExplorer(boolean orig) {
this.originatedFromDockerExplorer = orig;
}

@Override
public boolean originatedFromDockerExplorer() {
return originatedFromDockerExplorer;
Expand Down Expand Up @@ -256,14 +256,36 @@ public void setProject(IProject project) {
firePropertyChange(PROPERTY_PROJECT, this.project, this.project = project);
}

public void setProjectOrDefault(IProject project) {
if (project != null) {
protected void setProjectOrDefault(IProject project) {
if (projects == null) {
return;
}

if (project != null
&& projects.contains(project)) {
setProject(project);
} else if (!projects.isEmpty()) {
setProject(projects.get(0));
project = getDefaultProject();
setProject(project);
}
}

private IProject getDefaultProject() {
IProject project;
if (projectsComparator != null) {
Collections.sort(projects, projectsComparator);
project = projects.get(0);
} else {
project = projects.get(0);
}
return project;
}

@Override
public void setProjectsComparator(Comparator<IProject> comparator) {
this.projectsComparator = comparator;
}

@Override
public String getResourceName() {
return this.resourceName;
Expand Down
Expand Up @@ -38,8 +38,6 @@
import org.jboss.tools.openshift.core.connection.Connection;
import org.jboss.tools.openshift.internal.ui.OpenShiftUIActivator;
import org.jboss.tools.openshift.internal.ui.OpenshiftUIConstants;
import org.jboss.tools.openshift.internal.ui.comparators.ProjectViewerComparator;
import org.jboss.tools.openshift.internal.ui.explorer.OpenShiftExplorerLabelProvider;
import org.jboss.tools.openshift.internal.ui.treeitem.ObservableTreeItem;
import org.jboss.tools.openshift.internal.ui.wizard.common.ResourceLabelsPageModel;
import org.jboss.tools.openshift.internal.ui.wizard.newapp.fromtemplate.TemplateApplicationSource;
Expand Down Expand Up @@ -76,7 +74,8 @@ public class NewApplicationWizardModel
private String localAppSourceFilename;
private IResourceFactory resourceFactory;
private org.eclipse.core.resources.IProject eclipseProject;

private Comparator<ObservableTreeItem> comparator;

private void update(boolean useLocalAppSource, IProject selectedProject, List<ObservableTreeItem> projectItems, IApplicationSource appSource, String localAppSourceFilename, IStatus appSourceStatus) {
updateProjectItems(projectItems);
firePropertyChange(PROPERTY_PROJECT, this.project, this.project = selectedProject = getProjectOrDefault(selectedProject, projectItems));
Expand Down Expand Up @@ -208,6 +207,20 @@ private IProject getProjectOrDefault(IProject project, List<ObservableTreeItem>
return project;
}

private IProject getDefaultProject(List<ObservableTreeItem> projects) {
if (projects == null
|| projects.size() == 0) {
return null;
} else if(projects.size() == 1) {
return (IProject) projects.get(0).getModel();
}
ObservableTreeItem[] items = projects.toArray(new ObservableTreeItem[projects.size()]);
if (comparator != null) {
Arrays.sort(items, comparator);
}
return (IProject) items[0].getModel();
}

@Override
public void setProject(IProject project) {
update(this.useLocalAppSource, project, this.projectItems, this.serverAppSource, this.localAppSourceFilename, this.appSourceStatus);
Expand Down Expand Up @@ -311,18 +324,8 @@ private void reset() {
update(this.useLocalAppSource, null, null, null, null, Status.OK_STATUS);
}

Comparator<ObservableTreeItem> comparator = new ProjectViewerComparator(new OpenShiftExplorerLabelProvider()).asItemComparator();

private IProject getDefaultProject(List<ObservableTreeItem> projects) {
if (projects == null
|| projects.size() == 0) {
return null;
} else if(projects.size() == 1) {
return (IProject) projects.get(0).getModel();
}
ObservableTreeItem[] items = projects.toArray(new ObservableTreeItem[projects.size()]);
Arrays.sort(items, comparator);
return (IProject) items[0].getModel();
public void setProjectsComparator(Comparator<ObservableTreeItem> comparator) {
this.comparator = comparator;
}

private void setResourceFactory(Connection connection) {
Expand Down
Expand Up @@ -9,23 +9,30 @@
package org.jboss.tools.openshift.internal.ui.wizard.resource;

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

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.jboss.tools.common.databinding.ObservablePojo;
import org.jboss.tools.openshift.common.core.connection.IConnection;
import org.jboss.tools.openshift.internal.ui.treeitem.ObservableTreeItem;
import org.jboss.tools.openshift.internal.ui.utils.ObservableTreeItemUtils;

import com.openshift.restclient.model.IProject;

/**
* @author Jeff Maury
* @author Andre Dietisheim
*/
public class NewResourceWizardModel extends ObservablePojo implements IResourcePayloadPageModel {

private IConnection connection;
private IProject project;
private List<ObservableTreeItem> projectItems = new ArrayList<>();
private String source;
private Comparator<ObservableTreeItem> comparator;

/* (non-Javadoc)
* @see org.jboss.tools.openshift.internal.ui.wizard.common.IProjectPageModel#loadResources()
Expand Down Expand Up @@ -83,8 +90,16 @@ private void update(IProject project, List<ObservableTreeItem> projectItems, Str
}

private IProject getDefaultProject(IProject project, List<ObservableTreeItem> projectItems) {
if ((project == null) && (projectItems != null) && (projectItems.size() > 0)) {
project = (IProject) projectItems.get(0).getModel();
if (CollectionUtils.isEmpty(projectItems)) {
return null;
}

if (project == null
|| !ObservableTreeItemUtils.contains(project, projectItems)) {
if (comparator != null) {
Collections.sort(projectItems, comparator);
}
project = ObservableTreeItemUtils.getFirstModel(IProject.class, projectItems);
}
return project;
}
Expand Down Expand Up @@ -163,5 +178,10 @@ public void setSource(String source) {
public String getSource() {
return source;
}

@Override
public void setProjectsComparator(Comparator<ObservableTreeItem> comparator) {
this.comparator = comparator;
}

}

0 comments on commit 20b6448

Please sign in to comment.