
net.alantea.glideui.pageelements.GliderPage Maven / Gradle / Ivy
The newest version!
package net.alantea.glideui.pageelements;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JPanel;
import net.alantea.glide.Element;
import net.alantea.glide.Entity;
import net.alantea.glideui.parser.GUIDataAccessParser;
import net.alantea.glideui.utils.LinkAccess;
import net.alantea.swing.pageelements.GUIElement;
import net.alantea.swing.pageelements.GUIElementPage;
/**
* The Class GliderPage.
*/
public class GliderPage extends GUIElementPage
{
/** The Constant serialVersionUID. */
private static final long serialVersionUID = 1L;
/**
* Instantiates a new glider page.
*
* @param parent the parent
* @param element the element
* @param reference the reference
*/
public GliderPage(JPanel parent, Element element, String reference)
{
super(parent, element, reference, generateGUIElements(parent, element));
}
private static List generateGUIElements(JPanel parent, Element element)
{
List list = GUIElementPage.generateGUIElements(element);
if (parent != null)
{
List sublist = instrumentElementLinks(parent, element.getClass(), element);
list.addAll(sublist);
}
return list;
}
/**
* Instrument element links.
*
* @param element the element
* @param theClass the the class
*/
private static List instrumentElementLinks(JPanel parent, Class> theClass, Element element)
{
List list = new LinkedList<>();
if (theClass != Object.class)
{
List sublist = instrumentElementLinks(parent,theClass.getSuperclass(), element);
list.addAll(sublist);
}
List linkAccesses = GUIDataAccessParser.getLinks(theClass.getName());
if (linkAccesses != null)
{
for (LinkAccess linkAccess : linkAccesses)
{
GUIElement elt = instrumentElementLink(parent,linkAccess, element.getClass(), element);
list.add(elt);
}
}
return list;
}
private static GUIElement instrumentElementLink(JPanel parent, LinkAccess link, Class extends Element> class1,
Element element)
{
if ("MINDMAP".equals(link.getType()))
{
return instrumentMindMapElementLink(parent, link, class1, element);
}
else if (link.isMultiple())
{
return instrumentMultipleElementLink(parent, link, class1, element);
}
else
{
return instrumentUniqueElementLink(parent, link, class1, element);
}
}
private static GUIElement instrumentMindMapElementLink(JPanel parent, LinkAccess link, Class extends Element> class1,
Element element)
{
String key = (link.getKey().isEmpty()) ? link.getName() : link.getKey();
int n = link.getOrder();
MindMapLinkElement elt = new MindMapLinkElement(parent, link.getName(),
(Entity) element, key, link.isEditable(), link.getPage(),
(n == Integer.MAX_VALUE) ? -2 : 128, link.getOrder(), link.getAttributes());
return elt;
}
private static GUIElement instrumentMultipleElementLink(JPanel parent, LinkAccess link, Class extends Element> class1,
Element element)
{
String key = (link.getKey().isEmpty()) ? link.getName() : link.getKey();
int n = link.getOrder();
@SuppressWarnings("unchecked")
MultipleLinkElement elt = new MultipleLinkElement(parent, link.getName(), link.getDirection(),
(Entity) element, key, link.isEditable(), link.getPage(), (Class extends Entity>) link.getTarget(),
link.getRelationType(), link.getRelationTarget(),
(n == Integer.MAX_VALUE) ? -2 : 128, link.getOrder(), link.isCreate(), link.getAttributes());
return elt;
}
private static GUIElement instrumentUniqueElementLink(JPanel parent, LinkAccess link, Class extends Element> class1,
Element element)
{
String key = (link.getKey().isEmpty()) ? link.getName() : link.getKey();
UniqueLinkElement elt = new UniqueLinkElement(parent, link.getName(), link.getDirection(),
(Entity) element, key, link.isEditable(), link.getPage(),
link.getRelationType(), link.getRelationTarget(), 40, link.getOrder(), link.getAttributes());
return elt;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy