use of com.codename1.rad.nodes.ActionNode in project CodeRAD by shannah.
the class ActionNode method findAttribute.
@Override
public Attribute findAttribute(Class type) {
Attribute att = super.findAttribute(type);
if (att != null) {
return att;
}
Node parent = getParent();
if (parent instanceof ActionNode) {
return parent.findAttribute(type);
}
return null;
}
use of com.codename1.rad.nodes.ActionNode in project CodeRAD by shannah.
the class Controller method extendAction.
/**
* Extends an existing action from one of the parent controllers, and registers it as an action
* on this controller.
* @param category The category to register the action to.
* @param overwriteAttributes Whether to overwrite existing attributes of the action. If false, attributes
* provided will be ignored when extending actions that already have those attributes
* defined.
* @param attributes Attributes to add to the action.
* @return The action that was added.
* @since 2.0
*/
public ActionNode extendAction(ActionNode.Category category, boolean overwriteAttributes, Attribute... attributes) {
ActionNode action = getInheritedAction(category);
if (action == null) {
action = UI.action(attributes);
} else {
action = (ActionNode) action.createProxy(action.getParent());
action.setAttributes(overwriteAttributes, attributes);
}
addActions(category, action);
return action;
}
use of com.codename1.rad.nodes.ActionNode in project CodeRAD by shannah.
the class DefaultActionViewFactory method update.
public static void update(Button btn, Entity entity, ActionNode action) {
boolean repaint = false;
boolean revalidate = false;
Condition cond = action.getCondition();
if (cond != null) {
boolean hidden = !cond.getValue().test(entity);
if (hidden != btn.isHidden()) {
btn.setHidden(hidden);
btn.setVisible(!hidden);
revalidate = true;
}
}
EnabledCondition enabledCond = action.getEnabledCondition();
if (enabledCond != null) {
boolean enabled = enabledCond.getValue().test(entity);
if (enabled != btn.isEnabled()) {
btn.setEnabled(enabled);
repaint = true;
}
}
if (action.getLabel() != null) {
String currTextVal = btn.getText();
String newTextVal = action.getLabelText(entity);
if (!Objects.equals(currTextVal, newTextVal)) {
btn.setText(newTextVal);
repaint = true;
}
}
if (!action.isTextStyle() && !"".equals(btn.getText().trim())) {
btn.setText("");
repaint = true;
}
if (action.getUIID() != null) {
String currUiid = btn.getUIID();
String newUiid = action.getUIID(entity, "Button");
if (!Objects.equals(currUiid, newUiid)) {
btn.setUIID(newUiid);
repaint = true;
}
}
if (btn instanceof CheckBox) {
SelectedCondition selectedCond = action.getSelectedCondition();
if (selectedCond != null) {
boolean selected = selectedCond.getValue().test(entity);
if (selected != btn.isSelected()) {
((CheckBox) btn).setSelected(selected);
repaint = true;
ActionNode newState = selected ? action.getSelected() : action.getUnselected();
ActionNode oldState = selected ? action.getUnselected() : action.getSelected();
if (oldState != newState) {
String currText = btn.getText();
String newText = newState.getLabelText(entity);
if (!newState.isTextStyle()) {
newText = "";
}
if (!Objects.equals(newText, currText)) {
btn.setText(newText);
}
}
}
}
}
Badge badge = action.getBadge();
if (badge != null) {
btn.setBadgeText(badge.getValue(entity));
BadgeUIID badgeUiid = action.getBadgeUIID();
if (badgeUiid != null) {
btn.setBadgeUIID(badgeUiid.getValue());
}
}
if (revalidate || repaint) {
Form f = btn.getComponentForm();
if (f != null) {
if (revalidate) {
Component entityView = findEntityViewParent(btn);
if (entityView instanceof Container) {
((Container) entityView).revalidateLater();
} else {
entityView.repaint();
}
} else {
btn.repaint();
}
}
}
}
use of com.codename1.rad.nodes.ActionNode in project CodeRAD by shannah.
the class DefaultActionViewFactory method initUI.
public static void initUI(Button btn, Entity entity, ActionNode action) {
btn.setBlockLead(true);
boolean text = action.isTextStyle();
boolean includeIcon = action.isIconStyle();
UIID uiid = action.getUIID();
if (uiid != null) {
btn.setUIID(uiid.getValue(entity));
}
IconUIID iconUiid = action.getIconUIID();
if (iconUiid != null) {
btn.setIconUIID(iconUiid.getValue());
}
Button button = btn;
if (action.getLabel() != null && text) {
button.setText(action.getLabel().getValue(entity.getEntity()));
}
if (!text && button.getText().length() > 0) {
button.setText("");
}
if (action.getImageIcon() != null && includeIcon) {
button.setIcon(action.getImageIcon().getValue());
if (action.getSelected() != action && action.getSelected().getImageIcon() != action.getImageIcon()) {
button.setRolloverIcon(action.getSelected().getImageIcon().getValue());
}
if (action.getPressed() != action && action.getPressed().getImageIcon() != action.getImageIcon()) {
button.setPressedIcon(action.getPressed().getImageIcon().getValue());
}
if (action.getDisabled() != action && action.getDisabled().getImageIcon() != action.getImageIcon()) {
button.setDisabledIcon(action.getDisabled().getImageIcon().getValue());
}
}
if (action.getMaterialIcon() != null && includeIcon) {
char unselectedIcon = action.getMaterialIcon().getValue();
char selectedIcon = action.getSelected().getMaterialIcon().getValue();
char pressedIcon = action.getPressed().getMaterialIcon().getValue();
char selectedPressed = pressedIcon;
if (action.getPressed() == action) {
selectedPressed = selectedIcon;
}
char disabledIcon = action.getDisabled().getMaterialIcon().getValue();
// button.setMaterialIcon(action.getMaterialIcon().getValue());
FontImage.setMaterialIcon(btn, new char[] { unselectedIcon, selectedIcon, pressedIcon, selectedPressed, disabledIcon }, -1);
}
if (action.getTextIcon() != null && includeIcon) {
String iconText = action.getTextIcon().getValue(entity);
Button iconLabel = new Button(iconText);
if (btn.getIconStyleComponent() != btn) {
iconLabel.setUIID(btn.getIconStyleComponent().getUIID());
} else {
iconLabel.setUIID(btn.getUIID());
// IF the button has a border and padding set, we don't
// want to to also be applied to the icon.
iconLabel.getAllStyles().stripMarginAndPadding();
}
iconLabel.setWidth(iconLabel.getPreferredW());
iconLabel.setHeight(iconLabel.getPreferredH());
btn.setIcon(new ComponentImage(iconLabel, iconLabel.getWidth(), iconLabel.getHeight()));
}
if (includeIcon && text) {
ActionStyle style = action.getActionStyle();
if (style != null) {
switch(style) {
case IconTop:
button.setTextPosition(BOTTOM);
break;
case IconBottom:
button.setTextPosition(TOP);
break;
case IconLeft:
button.setTextPosition(RIGHT);
break;
case IconRight:
button.setTextPosition(LEFT);
}
}
}
button.addActionListener(evt -> {
action.fireEvent(entity, button);
update(button, entity, action);
});
update(button, entity, action);
action.decorateComponent(btn);
}
use of com.codename1.rad.nodes.ActionNode in project CodeRAD by shannah.
the class DefaultActionViewFactory method initUI.
public static void initUI(MultiButton btn, Entity entity, ActionNode action) {
btn.setBlockLead(true);
boolean text = action.isTextStyle();
boolean includeIcon = action.isIconStyle();
UIID uiid = action.getUIID();
if (uiid != null) {
btn.setUIID(uiid.getValue(entity));
}
IconUIID iconUiid = action.getIconUIID();
if (iconUiid != null) {
btn.setIconUIID(iconUiid.getValue());
}
MultiButton button = btn;
if (action.getLabel() != null && text) {
button.setTextLines(action.getLabel().getValue(entity.getEntity()));
}
if (action.getImageIcon() != null && includeIcon) {
button.setIcon(action.getImageIcon().getValue());
if (action.getSelected() != action && action.getSelected().getImageIcon() != action.getImageIcon()) {
button.setRolloverIcon(action.getSelected().getImageIcon().getValue());
}
if (action.getPressed() != action && action.getPressed().getImageIcon() != action.getImageIcon()) {
button.setPressedIcon(action.getPressed().getImageIcon().getValue());
}
if (action.getDisabled() != action && action.getDisabled().getImageIcon() != action.getImageIcon()) {
button.setDisabledIcon(action.getDisabled().getImageIcon().getValue());
}
}
if (action.getMaterialIcon() != null && includeIcon) {
char unselectedIcon = action.getMaterialIcon().getValue();
char selectedIcon = action.getSelected().getMaterialIcon().getValue();
char pressedIcon = action.getPressed().getMaterialIcon().getValue();
char selectedPressed = pressedIcon;
if (action.getPressed() == action) {
selectedPressed = selectedIcon;
}
char disabledIcon = action.getDisabled().getMaterialIcon().getValue();
// button.setMaterialIcon(action.getMaterialIcon().getValue());
FontImage.setMaterialIcon(btn, new char[] { unselectedIcon, selectedIcon, pressedIcon, selectedPressed, disabledIcon }, -1);
}
if (action.getTextIcon() != null && includeIcon) {
String iconText = action.getTextIcon().getValue(entity);
Button iconLabel = new Button(iconText);
if (btn.getIconStyleComponent() != btn) {
iconLabel.setUIID(btn.getIconStyleComponent().getUIID());
} else {
iconLabel.setUIID(btn.getUIID());
// IF the button has a border and padding set, we don't
// want to to also be applied to the icon.
iconLabel.getAllStyles().stripMarginAndPadding();
}
iconLabel.setWidth(iconLabel.getPreferredW());
iconLabel.setHeight(iconLabel.getPreferredH());
btn.setIcon(new ComponentImage(iconLabel, iconLabel.getWidth(), iconLabel.getHeight()));
}
if (includeIcon && text) {
ActionStyle style = action.getActionStyle();
if (style != null) {
switch(style) {
case IconTop:
button.setTextPosition(BOTTOM);
break;
case IconBottom:
button.setTextPosition(TOP);
break;
case IconLeft:
button.setTextPosition(RIGHT);
break;
case IconRight:
button.setTextPosition(LEFT);
}
}
}
if (!text) {
button.setText("");
}
button.addActionListener(evt -> {
action.fireEvent(entity, button);
update(button, entity, action);
});
update(button, entity, action);
action.decorateComponent(btn);
}
Aggregations