Filter for not showing apps without luanch conf or main method

This commit is contained in:
BoykoAlex
2021-05-05 13:20:51 -04:00
parent d1c6d025c8
commit 0b840cd8ea

View File

@@ -14,17 +14,25 @@ import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.resources.IProject;
import org.springframework.ide.eclipse.boot.util.Log;
import org.springsource.ide.eclipse.commons.livexp.core.AsyncLiveExpression.AsyncMode;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.core.search.SearchEngine;
import org.eclipse.jdt.internal.debug.ui.launcher.MainMethodSearchEngine;
import org.springsource.ide.eclipse.commons.core.pstore.IPropertyStore;
import org.springsource.ide.eclipse.commons.core.pstore.PropertyStoreApi;
import org.springsource.ide.eclipse.commons.core.pstore.PropertyStores;
import org.springsource.ide.eclipse.commons.livexp.core.AsyncLiveExpression.AsyncMode;
import org.springsource.ide.eclipse.commons.livexp.core.LiveExpression;
import org.springsource.ide.eclipse.commons.livexp.core.LiveSetVariable;
import org.springsource.ide.eclipse.commons.livexp.core.ValueListener;
import org.springsource.ide.eclipse.commons.livexp.ui.Ilabelable;
import org.springsource.ide.eclipse.commons.livexp.util.Filter;
import org.springsource.ide.eclipse.commons.livexp.util.Filters;
import org.springsource.ide.eclipse.commons.livexp.util.Log;
import com.google.common.collect.ImmutableSet;
@@ -35,6 +43,7 @@ import com.google.common.collect.ImmutableSet;
*
* @author Kris De Volder
*/
@SuppressWarnings("restriction")
public class ToggleFiltersModel {
private static final Filter<BootDashElement> HIDE_SOLITARY_CONFS = new Filter<BootDashElement>() {
@@ -64,18 +73,50 @@ public class ToggleFiltersModel {
}
};
private static final Filter<BootDashElement> HIDE_LOCAL_NOT_RUNNABLE_APPS = new Filter<BootDashElement>() {
@Override
public boolean accept(BootDashElement t) {
if (t instanceof BootProjectDashElement) {
if (!t.getCurrentChildren().isEmpty()) {
return true;
}
IProject p = t.getProject();
if (p != null && p.exists()) {
IJavaProject jp = JavaCore.create(p);
if (jp != null) {
IJavaSearchScope searchScope = SearchEngine.createJavaSearchScope(new IJavaElement[]{jp}, IJavaSearchScope.SOURCES);
MainMethodSearchEngine engine = new MainMethodSearchEngine();
IType[] types = null;
try {
types = engine.searchMainMethods(new NullProgressMonitor(), searchScope, false);
return types != null && types.length > 0;
}
catch (Exception e) {
Log.log(e);
}
}
}
return false;
}
return true;
}
};
public static final FilterChoice FILTER_CHOICE_HIDE_NON_WORKSPACE_ELEMENTS = new FilterChoice("hide.non-workspace",
"Hide non-workspace elements", HIDE_NON_WORKSPACE_ELEMENTS);
public static final FilterChoice FILTER_CHOICE_HIDE_SOLITARY_CONFS = new FilterChoice("hide.solitary-launch-config",
"Hide solitary launch configs", HIDE_SOLITARY_CONFS, true);
public static final FilterChoice FILTER_CHOICE_HIDE_LOCAL_SERVICES = new FilterChoice("hide.local-cloud-services",
"Hide local cloud services", HIDE_LOCAL_SERVICES, true);
public static final FilterChoice FILTER_CHOICE_HIDE_NOT_RUNNABLE_APPS = new FilterChoice("hide.not-runnable-apps",
"Hide local non-runnable apps", HIDE_LOCAL_NOT_RUNNABLE_APPS, true);
private static final String STORE_ID = "toggle-filters";
private static final FilterChoice[] FILTERS = {
FILTER_CHOICE_HIDE_NON_WORKSPACE_ELEMENTS,
FILTER_CHOICE_HIDE_SOLITARY_CONFS,
FILTER_CHOICE_HIDE_LOCAL_SERVICES
FILTER_CHOICE_HIDE_LOCAL_SERVICES,
FILTER_CHOICE_HIDE_NOT_RUNNABLE_APPS
};
private final PropertyStoreApi persistentProperties;