mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-10 17:22:09 +10:00
refactor
This commit is contained in:
@@ -26,12 +26,8 @@ import java.awt.Image;
|
|||||||
import java.awt.RenderingHints;
|
import java.awt.RenderingHints;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.ArrayList;
|
import java.lang.reflect.Modifier;
|
||||||
import java.util.Collection;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import javax.swing.Icon;
|
import javax.swing.Icon;
|
||||||
import javax.swing.ImageIcon;
|
import javax.swing.ImageIcon;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
@@ -47,6 +43,11 @@ import org.diylc.core.annotations.ComponentDescriptor;
|
|||||||
import org.diylc.core.annotations.EditableProperty;
|
import org.diylc.core.annotations.EditableProperty;
|
||||||
import org.diylc.core.annotations.KeywordPolicy;
|
import org.diylc.core.annotations.KeywordPolicy;
|
||||||
import org.diylc.lang.LangUtil;
|
import org.diylc.lang.LangUtil;
|
||||||
|
import org.reflections.Reflections;
|
||||||
|
import org.reflections.util.ConfigurationBuilder;
|
||||||
|
import org.reflections.util.FilterBuilder;
|
||||||
|
|
||||||
|
import static org.reflections.scanners.Scanners.TypesAnnotated;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility class with component processing methods.
|
* Utility class with component processing methods.
|
||||||
@@ -63,6 +64,7 @@ public class ComponentProcessor {
|
|||||||
private Map<String, IPropertyValidator> propertyValidatorCache;
|
private Map<String, IPropertyValidator> propertyValidatorCache;
|
||||||
private Map<String, ComponentType> componentTypeMap;
|
private Map<String, ComponentType> componentTypeMap;
|
||||||
private Map<String, IComponentTransformer> componentTransformerMap;
|
private Map<String, IComponentTransformer> componentTransformerMap;
|
||||||
|
private Map<String, List<ComponentType>> componentTypes;
|
||||||
|
|
||||||
public static ComponentProcessor getInstance() {
|
public static ComponentProcessor getInstance() {
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
@@ -218,6 +220,50 @@ public class ComponentProcessor {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, List<ComponentType>> getComponentTypes() {
|
||||||
|
if (componentTypes == null) {
|
||||||
|
LOG.info("Loading component types.");
|
||||||
|
componentTypes = new HashMap<String, List<ComponentType>>();
|
||||||
|
Reflections reflections = new Reflections(
|
||||||
|
new ConfigurationBuilder()
|
||||||
|
.forPackage("org.diylc")
|
||||||
|
.filterInputsBy(new FilterBuilder().includePackage("org.diylc.components"))
|
||||||
|
.setScanners(TypesAnnotated));
|
||||||
|
Set<Class<?>> componentTypeClasses = null;
|
||||||
|
try {
|
||||||
|
componentTypeClasses = reflections.getTypesAnnotatedWith(ComponentDescriptor.class, false);
|
||||||
|
|
||||||
|
for (Class<?> clazz : componentTypeClasses) {
|
||||||
|
if (!Modifier.isAbstract(clazz.getModifiers()) && IDIYComponent.class.isAssignableFrom(clazz)) {
|
||||||
|
ComponentType componentType =
|
||||||
|
ComponentProcessor.getInstance().extractComponentTypeFrom((Class<? extends IDIYComponent<?>>) clazz);
|
||||||
|
if (componentType == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// just to store in the cache
|
||||||
|
ComponentProcessor.getInstance().extractProperties(clazz);
|
||||||
|
|
||||||
|
List<ComponentType> nestedList;
|
||||||
|
if (componentTypes.containsKey(componentType.getCategory())) {
|
||||||
|
nestedList = componentTypes.get(componentType.getCategory());
|
||||||
|
} else {
|
||||||
|
nestedList = new ArrayList<ComponentType>();
|
||||||
|
componentTypes.put(componentType.getCategory(), nestedList);
|
||||||
|
}
|
||||||
|
nestedList.add(componentType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Map.Entry<String, List<ComponentType>> e : componentTypes.entrySet()) {
|
||||||
|
LOG.debug(e.getKey() + ": " + e.getValue());
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
LOG.error("Error loading component types", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return componentTypes;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns properties that have the same value for all the selected components.
|
* Returns properties that have the same value for all the selected components.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -137,6 +137,9 @@ public class Presenter implements IPlugInPort, IConfigListener {
|
|||||||
|
|
||||||
private static final Logger LOG = Logger.getLogger(Presenter.class);
|
private static final Logger LOG = Logger.getLogger(Presenter.class);
|
||||||
|
|
||||||
|
public static final Double[] ZOOM_LEVELS =
|
||||||
|
{0.25d, 0.3333d, 0.5d, 0.6667d, 0.75d, 1d, 1.25d, 1.5d, 2d, 2.5d, 3d};
|
||||||
|
|
||||||
public static VersionNumber CURRENT_VERSION = null;
|
public static VersionNumber CURRENT_VERSION = null;
|
||||||
private static List<Version> RECENT_VERSIONS = null;
|
private static List<Version> RECENT_VERSIONS = null;
|
||||||
|
|
||||||
@@ -149,7 +152,6 @@ public class Presenter implements IPlugInPort, IConfigListener {
|
|||||||
private static final int MAX_RECENT_FILES = 20;
|
private static final int MAX_RECENT_FILES = 20;
|
||||||
|
|
||||||
private Project currentProject;
|
private Project currentProject;
|
||||||
private Map<String, List<ComponentType>> componentTypes;
|
|
||||||
|
|
||||||
// Maps component class names to ComponentType objects.
|
// Maps component class names to ComponentType objects.
|
||||||
private List<IPlugIn> plugIns;
|
private List<IPlugIn> plugIns;
|
||||||
@@ -242,7 +244,7 @@ public class Presenter implements IPlugInPort, IConfigListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public java.lang.Double[] getAvailableZoomLevels() {
|
public java.lang.Double[] getAvailableZoomLevels() {
|
||||||
return new java.lang.Double[] {0.25d, 0.3333d, 0.5d, 0.6667d, 0.75d, 1d, 1.25d, 1.5d, 2d, 2.5d, 3d};
|
return ZOOM_LEVELS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -424,47 +426,7 @@ public class Presenter implements IPlugInPort, IConfigListener {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public Map<String, List<ComponentType>> getComponentTypes() {
|
public Map<String, List<ComponentType>> getComponentTypes() {
|
||||||
if (componentTypes == null) {
|
return ComponentProcessor.getInstance().getComponentTypes();
|
||||||
LOG.info("Loading component types.");
|
|
||||||
componentTypes = new HashMap<String, List<ComponentType>>();
|
|
||||||
Reflections reflections = new Reflections(
|
|
||||||
new ConfigurationBuilder()
|
|
||||||
.forPackage("org.diylc")
|
|
||||||
.filterInputsBy(new FilterBuilder().includePackage("org.diylc.components"))
|
|
||||||
.setScanners(TypesAnnotated));
|
|
||||||
Set<Class<?>> componentTypeClasses = null;
|
|
||||||
try {
|
|
||||||
componentTypeClasses = reflections.getTypesAnnotatedWith(ComponentDescriptor.class, false);
|
|
||||||
|
|
||||||
for (Class<?> clazz : componentTypeClasses) {
|
|
||||||
if (!Modifier.isAbstract(clazz.getModifiers()) && IDIYComponent.class.isAssignableFrom(clazz)) {
|
|
||||||
ComponentType componentType =
|
|
||||||
ComponentProcessor.getInstance().extractComponentTypeFrom((Class<? extends IDIYComponent<?>>) clazz);
|
|
||||||
if (componentType == null)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// just to store in the cache
|
|
||||||
ComponentProcessor.getInstance().extractProperties(clazz);
|
|
||||||
|
|
||||||
List<ComponentType> nestedList;
|
|
||||||
if (componentTypes.containsKey(componentType.getCategory())) {
|
|
||||||
nestedList = componentTypes.get(componentType.getCategory());
|
|
||||||
} else {
|
|
||||||
nestedList = new ArrayList<ComponentType>();
|
|
||||||
componentTypes.put(componentType.getCategory(), nestedList);
|
|
||||||
}
|
|
||||||
nestedList.add(componentType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Map.Entry<String, List<ComponentType>> e : componentTypes.entrySet()) {
|
|
||||||
LOG.debug(e.getKey() + ": " + e.getValue());
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
LOG.error("Error loading component types", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return componentTypes;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked"})
|
@SuppressWarnings({"unchecked"})
|
||||||
|
|||||||
Reference in New Issue
Block a user