use of com.codename1.rad.models in project CodenameOne by codenameone.
the class UserInterfaceEditor method reflowTableLayout.
private void reflowTableLayout(com.codename1.ui.Container parent) {
// affects the layout initially
if (parent.getLayout() instanceof com.codename1.ui.table.TableLayout) {
List<com.codename1.ui.Component> cmpList = new ArrayList<com.codename1.ui.Component>();
List constraintList = new ArrayList();
for (int iter = 0; iter < parent.getComponentCount(); iter++) {
com.codename1.ui.Component currentCmp = parent.getComponentAt(iter);
cmpList.add(currentCmp);
constraintList.add(parent.getLayout().getComponentConstraint(currentCmp));
}
parent.removeAll();
for (int iter = 0; iter < cmpList.size(); iter++) {
parent.addComponent(constraintList.get(iter), cmpList.get(iter));
}
}
}
use of com.codename1.rad.models in project CodenameOne by codenameone.
the class UserInterfaceEditor method getListOfAllCommands.
private static List<com.codename1.ui.Command> getListOfAllCommands(EditableResources res) {
final List<com.codename1.ui.Command> response = new ArrayList<com.codename1.ui.Command>();
UIBuilderOverride tempBuilder = new UIBuilderOverride() {
public com.codename1.ui.Command createCommandImpl(String commandName, com.codename1.ui.Image icon, int commandId, String action, boolean isBack, String arg) {
com.codename1.ui.Command c = super.createCommandImpl(commandName, icon, commandId, action, isBack, arg);
if (!response.contains(c)) {
response.add(c);
}
return c;
}
};
for (String uiResourceName : res.getUIResourceNames()) {
tempBuilder.createContainer(res, uiResourceName);
}
Collections.sort(response, new Comparator<com.codename1.ui.Command>() {
public int compare(com.codename1.ui.Command o1, com.codename1.ui.Command o2) {
if (o1 == null) {
if (o2 == null) {
return 0;
}
return -1;
}
if (o2 == null) {
return 1;
}
return String.CASE_INSENSITIVE_ORDER.compare(o1.getCommandName(), o2.getCommandName());
}
});
return response;
}
use of com.codename1.rad.models in project CodenameOne by codenameone.
the class UserInterfaceEditor method persistComponent.
public static void persistComponent(com.codename1.ui.Container containerInstance, com.codename1.ui.Component cmp, DataOutputStream out, EditableResources res) throws IOException {
if (cmp.getClientProperty("%base_form%") != null) {
out.writeUTF((String) cmp.getClientProperty("%base_form%"));
out.writeInt(PROPERTY_BASE_FORM);
}
out.writeUTF((String) cmp.getClientProperty(TYPE_KEY));
out.writeInt(PROPERTY_NAME);
if (cmp.getName() != null) {
out.writeUTF(cmp.getName());
} else {
out.writeUTF("");
}
if (cmp.getClientProperty("cn1$Properties") != null) {
String[] p = ((String) cmp.getClientProperty("cn1$Properties")).split(",");
if (p.length > 0) {
out.writeInt(PROPERTY_CLIENT_PROPERTIES);
out.writeInt(p.length);
for (String c : p) {
out.writeUTF(c);
out.writeUTF((String) cmp.getClientProperty(c));
}
}
}
if (cmp.getCloudBoundProperty() != null) {
out.writeInt(PROPERTY_CLOUD_BOUND_PROPERTY);
out.writeUTF(cmp.getCloudBoundProperty());
}
if (cmp.getCloudDestinationProperty() != null) {
out.writeInt(PROPERTY_CLOUD_DESTINATION_PROPERTY);
out.writeUTF(cmp.getCloudDestinationProperty());
}
if (isActualContainer(cmp) || cmp instanceof com.codename1.ui.list.ContainerList) {
com.codename1.ui.Container cnt = (com.codename1.ui.Container) cmp;
if (isPropertyModified(cnt, PROPERTY_SCROLLABLE_X)) {
out.writeInt(PROPERTY_SCROLLABLE_X);
out.writeBoolean(CodenameOneAccessor.isScrollableX(cnt));
}
if (isPropertyModified(cnt, PROPERTY_SCROLLABLE_Y)) {
out.writeInt(PROPERTY_SCROLLABLE_Y);
out.writeBoolean(CodenameOneAccessor.isScrollableY(cnt));
}
if (cmp instanceof com.codename1.ui.Tabs) {
com.codename1.ui.Tabs tab = (com.codename1.ui.Tabs) cmp;
out.writeInt(PROPERTY_COMPONENTS);
out.writeInt(tab.getTabCount());
for (int iter = 0; iter < tab.getTabCount(); iter++) {
out.writeUTF(tab.getTabTitle(iter));
persistComponent(containerInstance, tab.getTabComponentAt(iter), out, res);
}
if (isPropertyModified(cmp, PROPERTY_TAB_PLACEMENT)) {
out.writeInt(PROPERTY_TAB_PLACEMENT);
out.writeInt(((com.codename1.ui.Tabs) cmp).getTabPlacement());
}
if (isPropertyModified(cmp, PROPERTY_TAB_TEXT_POSITION)) {
out.writeInt(PROPERTY_TAB_TEXT_POSITION);
out.writeInt(((com.codename1.ui.Tabs) cmp).getTabTextPosition());
}
} else {
if (isPropertyModified(cmp, PROPERTY_LAYOUT)) {
com.codename1.ui.layouts.Layout l = cnt.getLayout();
out.writeInt(PROPERTY_LAYOUT);
if (l instanceof com.codename1.ui.layouts.FlowLayout) {
out.writeShort(LAYOUT_FLOW);
com.codename1.ui.layouts.FlowLayout f = (com.codename1.ui.layouts.FlowLayout) l;
out.writeBoolean(f.isFillRows());
out.writeInt(f.getAlign());
out.writeInt(f.getValign());
} else {
if (l instanceof com.codename1.ui.layouts.BorderLayout) {
out.writeShort(LAYOUT_BORDER);
com.codename1.ui.layouts.BorderLayout b = (com.codename1.ui.layouts.BorderLayout) l;
String north = b.getLandscapeSwap(com.codename1.ui.layouts.BorderLayout.NORTH);
String east = b.getLandscapeSwap(com.codename1.ui.layouts.BorderLayout.EAST);
String west = b.getLandscapeSwap(com.codename1.ui.layouts.BorderLayout.WEST);
String south = b.getLandscapeSwap(com.codename1.ui.layouts.BorderLayout.SOUTH);
String center = b.getLandscapeSwap(com.codename1.ui.layouts.BorderLayout.CENTER);
out.writeBoolean(north != null);
if (north != null) {
out.writeUTF(north);
}
out.writeBoolean(east != null);
if (east != null) {
out.writeUTF(east);
}
out.writeBoolean(west != null);
if (west != null) {
out.writeUTF(west);
}
out.writeBoolean(south != null);
if (south != null) {
out.writeUTF(south);
}
out.writeBoolean(center != null);
if (center != null) {
out.writeUTF(center);
}
out.writeBoolean(b.isAbsoluteCenter());
} else {
if (l instanceof com.codename1.ui.layouts.GridLayout) {
out.writeShort(LAYOUT_GRID);
out.writeInt(((com.codename1.ui.layouts.GridLayout) l).getRows());
out.writeInt(((com.codename1.ui.layouts.GridLayout) l).getColumns());
} else {
if (l instanceof com.codename1.ui.layouts.BoxLayout) {
if (getInt("axis", l.getClass(), l) == com.codename1.ui.layouts.BoxLayout.X_AXIS) {
out.writeShort(LAYOUT_BOX_X);
} else {
out.writeShort(LAYOUT_BOX_Y);
}
} else {
if (l instanceof com.codename1.ui.table.TableLayout) {
out.writeShort(LAYOUT_TABLE);
out.writeInt(((com.codename1.ui.table.TableLayout) l).getRows());
out.writeInt(((com.codename1.ui.table.TableLayout) l).getColumns());
} else {
if (l instanceof com.codename1.ui.layouts.LayeredLayout) {
out.writeShort(LAYOUT_LAYERED);
}
}
}
}
}
}
}
if (cmp instanceof com.codename1.ui.Form) {
com.codename1.ui.Form frm = (com.codename1.ui.Form) cmp;
out.writeInt(PROPERTY_COMPONENTS);
out.writeInt(frm.getContentPane().getComponentCount());
for (int iter = 0; iter < frm.getContentPane().getComponentCount(); iter++) {
persistComponent(containerInstance, frm.getContentPane().getComponentAt(iter), out, res);
}
if (isPropertyModified(cmp, PROPERTY_NEXT_FORM) && frm.getClientProperty("%next_form%") != null) {
out.writeInt(PROPERTY_NEXT_FORM);
out.writeUTF((String) frm.getClientProperty("%next_form%"));
}
if (isPropertyModified(cmp, PROPERTY_TITLE)) {
out.writeInt(PROPERTY_TITLE);
out.writeUTF(frm.getTitle());
}
if (isPropertyModified(cmp, PROPERTY_CYCLIC_FOCUS)) {
out.writeInt(PROPERTY_CYCLIC_FOCUS);
out.writeBoolean(frm.isCyclicFocus());
}
if (isPropertyModified(cmp, PROPERTY_DIALOG_UIID) && cmp instanceof com.codename1.ui.Dialog) {
com.codename1.ui.Dialog dlg = (com.codename1.ui.Dialog) cmp;
out.writeInt(PROPERTY_DIALOG_UIID);
out.writeUTF(dlg.getDialogUIID());
}
if (isPropertyModified(cmp, PROPERTY_DISPOSE_WHEN_POINTER_OUT) && cmp instanceof com.codename1.ui.Dialog) {
com.codename1.ui.Dialog dlg = (com.codename1.ui.Dialog) cmp;
out.writeInt(PROPERTY_DISPOSE_WHEN_POINTER_OUT);
out.writeBoolean(dlg.isDisposeWhenPointerOutOfBounds());
}
if (isPropertyModified(cmp, PROPERTY_DIALOG_POSITION) && cmp instanceof com.codename1.ui.Dialog) {
com.codename1.ui.Dialog dlg = (com.codename1.ui.Dialog) cmp;
if (dlg.getDialogPosition() != null) {
out.writeInt(PROPERTY_DIALOG_POSITION);
out.writeUTF(dlg.getDialogPosition());
}
}
if (frm.getCommandCount() > 0 || frm.getBackCommand() != null) {
if (isPropertyModified(cmp, PROPERTY_COMMANDS) || isPropertyModified(cmp, PROPERTY_COMMANDS_LEGACY)) {
out.writeInt(PROPERTY_COMMANDS);
if (frm.getBackCommand() != null && !hasBackCommand(frm, frm.getBackCommand())) {
out.writeInt(frm.getCommandCount() + 1);
ActionCommand cmd = (ActionCommand) frm.getBackCommand();
out.writeUTF(cmd.getCommandName());
if (cmd.getIcon() != null) {
out.writeUTF(res.findId(cmd.getIcon()));
} else {
out.writeUTF("");
}
if (cmd.getRolloverIcon() != null) {
out.writeUTF(res.findId(cmd.getRolloverIcon()));
} else {
out.writeUTF("");
}
if (cmd.getPressedIcon() != null) {
out.writeUTF(res.findId(cmd.getPressedIcon()));
} else {
out.writeUTF("");
}
if (cmd.getDisabledIcon() != null) {
out.writeUTF(res.findId(cmd.getDisabledIcon()));
} else {
out.writeUTF("");
}
out.writeInt(cmd.getId());
if (cmd.getAction() != null) {
out.writeUTF(cmd.getAction());
if (cmd.getAction().equals("$Execute")) {
out.writeUTF(cmd.getArgument());
}
} else {
out.writeUTF("");
}
out.writeBoolean(frm.getBackCommand() == cmd);
} else {
out.writeInt(frm.getCommandCount());
}
for (int iter = frm.getCommandCount() - 1; iter >= 0; iter--) {
ActionCommand cmd = (ActionCommand) frm.getCommand(iter);
out.writeUTF(cmd.getCommandName());
if (cmd.getIcon() != null) {
out.writeUTF(res.findId(cmd.getIcon()));
} else {
out.writeUTF("");
}
if (cmd.getRolloverIcon() != null) {
out.writeUTF(res.findId(cmd.getRolloverIcon()));
} else {
out.writeUTF("");
}
if (cmd.getPressedIcon() != null) {
out.writeUTF(res.findId(cmd.getPressedIcon()));
} else {
out.writeUTF("");
}
if (cmd.getDisabledIcon() != null) {
out.writeUTF(res.findId(cmd.getDisabledIcon()));
} else {
out.writeUTF("");
}
out.writeInt(cmd.getId());
if (cmd.getAction() != null) {
out.writeUTF(cmd.getAction());
if (cmd.getAction().equals("$Execute")) {
out.writeUTF(cmd.getArgument());
}
} else {
out.writeUTF("");
}
out.writeBoolean(frm.getBackCommand() == cmd);
}
}
}
} else {
if (!(cmp instanceof com.codename1.ui.list.ContainerList)) {
out.writeInt(PROPERTY_COMPONENTS);
out.writeInt(cnt.getComponentCount());
for (int iter = 0; iter < cnt.getComponentCount(); iter++) {
persistComponent(containerInstance, cnt.getComponentAt(iter), out, res);
}
} else {
com.codename1.ui.list.ContainerList lst = ((com.codename1.ui.list.ContainerList) cmp);
if (isPropertyModified(cmp, PROPERTY_LIST_RENDERER) && lst.getRenderer() instanceof com.codename1.ui.list.GenericListCellRenderer) {
out.writeInt(PROPERTY_LIST_RENDERER);
com.codename1.ui.list.GenericListCellRenderer g = (com.codename1.ui.list.GenericListCellRenderer) lst.getRenderer();
if (g.getSelectedEven() == null) {
out.writeByte(2);
out.writeUTF(g.getSelected().getName());
out.writeUTF(g.getUnselected().getName());
} else {
out.writeByte(4);
out.writeUTF(g.getSelected().getName());
out.writeUTF(g.getUnselected().getName());
out.writeUTF(g.getSelectedEven().getName());
out.writeUTF(g.getUnselectedEven().getName());
}
}
}
}
}
} else {
if (cmp instanceof com.codename1.ui.Label) {
com.codename1.ui.Label lbl = (com.codename1.ui.Label) cmp;
out.writeInt(PROPERTY_TEXT);
out.writeUTF(lbl.getText());
if (isPropertyModified(cmp, PROPERTY_ALIGNMENT)) {
out.writeInt(PROPERTY_ALIGNMENT);
out.writeInt(lbl.getAlignment());
}
if (isPropertyModified(cmp, PROPERTY_ICON)) {
if (lbl.getIcon() != null) {
out.writeInt(PROPERTY_ICON);
out.writeUTF(res.findId(lbl.getIcon()));
}
}
if (lbl instanceof com.codename1.ui.Button) {
com.codename1.ui.Button button = (com.codename1.ui.Button) lbl;
if (isPropertyModified(cmp, PROPERTY_ROLLOVER_ICON)) {
if (button.getRolloverIcon() != null) {
out.writeInt(PROPERTY_ROLLOVER_ICON);
out.writeUTF(res.findId(button.getRolloverIcon()));
}
}
if (isPropertyModified(cmp, PROPERTY_PRESSED_ICON)) {
if (button.getPressedIcon() != null) {
out.writeInt(PROPERTY_PRESSED_ICON);
out.writeUTF(res.findId(button.getPressedIcon()));
}
}
if (isPropertyModified(cmp, PROPERTY_DISABLED_ICON)) {
if (button.getDisabledIcon() != null) {
out.writeInt(PROPERTY_DISABLED_ICON);
out.writeUTF(res.findId(button.getDisabledIcon()));
}
}
if (isPropertyModified(cmp, PROPERTY_TOGGLE_BUTTON)) {
out.writeInt(PROPERTY_TOGGLE_BUTTON);
out.writeBoolean(((com.codename1.ui.Button) cmp).isToggle());
}
} else {
if (lbl instanceof com.codename1.ui.Slider) {
com.codename1.ui.Slider sld = (com.codename1.ui.Slider) lbl;
if (isPropertyModified(cmp, PROPERTY_EDITABLE)) {
out.writeInt(PROPERTY_EDITABLE);
out.writeBoolean(sld.isEditable());
}
if (isPropertyModified(cmp, PROPERTY_INFINITE)) {
out.writeInt(PROPERTY_INFINITE);
out.writeBoolean(sld.isInfinite());
}
if (isPropertyModified(cmp, PROPERTY_SLIDER_THUMB) && sld.getThumbImage() != null) {
out.writeInt(PROPERTY_SLIDER_THUMB);
out.writeUTF(res.findId(sld.getThumbImage()));
}
if (isPropertyModified(cmp, PROPERTY_PROGRESS)) {
out.writeInt(PROPERTY_PROGRESS);
out.writeInt(sld.getProgress());
}
if (isPropertyModified(cmp, PROPERTY_VERTICAL)) {
out.writeInt(PROPERTY_VERTICAL);
out.writeBoolean(sld.isVertical());
}
if (isPropertyModified(cmp, PROPERTY_INCREMENTS)) {
out.writeInt(PROPERTY_INCREMENTS);
out.writeInt(sld.getIncrements());
}
if (isPropertyModified(cmp, PROPERTY_MAX_VALUE)) {
out.writeInt(PROPERTY_MAX_VALUE);
out.writeInt(sld.getMaxValue());
}
if (isPropertyModified(cmp, PROPERTY_MIN_VALUE)) {
out.writeInt(PROPERTY_MIN_VALUE);
out.writeInt(sld.getMinValue());
}
if (isPropertyModified(cmp, PROPERTY_RENDER_PERCENTAGE_ON_TOP)) {
out.writeInt(PROPERTY_RENDER_PERCENTAGE_ON_TOP);
out.writeBoolean(sld.isRenderPercentageOnTop());
}
}
}
if (isPropertyModified(cmp, PROPERTY_RADIO_GROUP)) {
out.writeInt(PROPERTY_RADIO_GROUP);
out.writeUTF(((com.codename1.ui.RadioButton) cmp).getGroup());
}
if (isPropertyModified(cmp, PROPERTY_SELECTED)) {
out.writeInt(PROPERTY_SELECTED);
out.writeBoolean(((com.codename1.ui.Button) cmp).isSelected());
}
if (isPropertyModified(cmp, PROPERTY_GAP)) {
out.writeInt(PROPERTY_GAP);
out.writeInt(lbl.getGap());
}
if (isPropertyModified(cmp, PROPERTY_VERTICAL_ALIGNMENT)) {
out.writeInt(PROPERTY_VERTICAL_ALIGNMENT);
out.writeInt(lbl.getVerticalAlignment());
}
if (isPropertyModified(cmp, PROPERTY_TEXT_POSITION)) {
out.writeInt(PROPERTY_TEXT_POSITION);
out.writeInt(lbl.getTextPosition());
}
} else {
if (cmp instanceof com.codename1.ui.TextArea) {
com.codename1.ui.TextArea txt = (com.codename1.ui.TextArea) cmp;
if (isPropertyModified(cmp, PROPERTY_VERTICAL_ALIGNMENT)) {
out.writeInt(PROPERTY_VERTICAL_ALIGNMENT);
out.writeInt(txt.getVerticalAlignment());
}
if (isPropertyModified(cmp, PROPERTY_TEXT)) {
out.writeInt(PROPERTY_TEXT);
out.writeUTF(txt.getText());
}
if (isPropertyModified(cmp, PROPERTY_TEXT_AREA_GROW)) {
out.writeInt(PROPERTY_TEXT_AREA_GROW);
out.writeBoolean(txt.isGrowByContent());
}
if (isPropertyModified(cmp, PROPERTY_TEXT_CONSTRAINT)) {
out.writeInt(PROPERTY_TEXT_CONSTRAINT);
out.writeInt(txt.getConstraint());
}
if (isPropertyModified(cmp, PROPERTY_TEXT_MAX_LENGTH)) {
out.writeInt(PROPERTY_TEXT_MAX_LENGTH);
out.writeInt(txt.getMaxSize());
}
if (isPropertyModified(cmp, PROPERTY_EDITABLE)) {
out.writeInt(PROPERTY_EDITABLE);
out.writeBoolean(txt.isEditable());
}
if (isPropertyModified(cmp, PROPERTY_ALIGNMENT)) {
out.writeInt(PROPERTY_ALIGNMENT);
out.writeInt(txt.getAlignment());
}
if (isPropertyModified(cmp, PROPERTY_HINT)) {
out.writeInt(PROPERTY_HINT);
out.writeUTF(txt.getHint());
}
if (isPropertyModified(cmp, PROPERTY_HINT_ICON) && txt.getHintIcon() != null) {
out.writeInt(PROPERTY_HINT_ICON);
out.writeUTF(res.findId(txt.getHintIcon()));
}
if (isPropertyModified(cmp, PROPERTY_COLUMNS)) {
out.writeInt(PROPERTY_COLUMNS);
out.writeInt(txt.getColumns());
}
if (isPropertyModified(cmp, PROPERTY_ROWS)) {
out.writeInt(PROPERTY_ROWS);
out.writeInt(txt.getRows());
}
} else {
if (cmp instanceof com.codename1.ui.List) {
com.codename1.ui.List lst = (com.codename1.ui.List) cmp;
if (isPropertyModified(cmp, PROPERTY_ITEM_GAP)) {
out.writeInt(PROPERTY_ITEM_GAP);
out.writeInt(lst.getItemGap());
}
if (isPropertyModified(cmp, PROPERTY_LIST_FIXED)) {
out.writeInt(PROPERTY_LIST_FIXED);
out.writeInt(lst.getFixedSelection());
}
if (isPropertyModified(cmp, PROPERTY_LIST_ORIENTATION)) {
out.writeInt(PROPERTY_LIST_ORIENTATION);
out.writeInt(lst.getOrientation());
}
if (isPropertyModified(cmp, PROPERTY_HINT)) {
out.writeInt(PROPERTY_HINT);
out.writeUTF(lst.getHint());
}
if (isPropertyModified(cmp, PROPERTY_HINT_ICON) && lst.getHintIcon() != null) {
out.writeInt(PROPERTY_HINT_ICON);
out.writeUTF(res.findId(lst.getHintIcon()));
}
if (isPropertyModified(cmp, PROPERTY_LIST_RENDERER) && lst.getRenderer() instanceof com.codename1.ui.list.GenericListCellRenderer) {
out.writeInt(PROPERTY_LIST_RENDERER);
com.codename1.ui.list.GenericListCellRenderer g = (com.codename1.ui.list.GenericListCellRenderer) lst.getRenderer();
if (g.getSelectedEven() == null) {
out.writeByte(2);
out.writeUTF(g.getSelected().getName());
out.writeUTF(g.getUnselected().getName());
} else {
out.writeByte(4);
out.writeUTF(g.getSelected().getName());
out.writeUTF(g.getUnselected().getName());
out.writeUTF(g.getSelectedEven().getName());
out.writeUTF(g.getUnselectedEven().getName());
}
}
if (!(cmp instanceof com.codename1.components.RSSReader)) {
out.writeInt(PROPERTY_LIST_ITEMS);
out.writeInt(lst.getModel().getSize());
for (int iter = 0; iter < lst.getModel().getSize(); iter++) {
Object o = lst.getModel().getItemAt(iter);
if (o instanceof String) {
out.writeByte(1);
out.writeUTF((String) o);
} else {
out.writeByte(2);
Hashtable h = (Hashtable) o;
out.writeInt(h.size());
for (Object key : h.keySet()) {
Object val = h.get(key);
if (val instanceof com.codename1.ui.Image) {
out.writeInt(2);
out.writeUTF((String) key);
out.writeUTF(res.findId(val));
} else {
out.writeInt(1);
out.writeUTF((String) key);
if (val instanceof ActionCommand) {
out.writeUTF(((ActionCommand) val).getAction());
} else {
out.writeUTF((String) val);
}
}
}
}
}
}
}
}
}
}
if (isPropertyModified(cmp, PROPERTY_LAYOUT_CONSTRAINT) || (cmp.getParent() != null && cmp.getParent().getLayout() instanceof com.codename1.ui.layouts.BorderLayout)) {
if (cmp.getParent() != null && cmp != containerInstance && cmp.getClientProperty("%base_form%") == null) {
com.codename1.ui.layouts.Layout l = cmp.getParent().getLayout();
if (l instanceof com.codename1.ui.layouts.BorderLayout) {
out.writeInt(PROPERTY_LAYOUT_CONSTRAINT);
out.writeUTF((String) l.getComponentConstraint(cmp));
} else {
if (l instanceof com.codename1.ui.table.TableLayout) {
out.writeInt(PROPERTY_LAYOUT_CONSTRAINT);
com.codename1.ui.table.TableLayout.Constraint con = (com.codename1.ui.table.TableLayout.Constraint) l.getComponentConstraint(cmp);
out.writeInt(getInt("row", con.getClass(), con));
out.writeInt(getInt("column", con.getClass(), con));
out.writeInt(getInt("height", con.getClass(), con));
out.writeInt(getInt("width", con.getClass(), con));
out.writeInt(getInt("align", con.getClass(), con));
out.writeInt(getInt("spanHorizontal", con.getClass(), con));
out.writeInt(getInt("valign", con.getClass(), con));
out.writeInt(getInt("spanVertical", con.getClass(), con));
}
}
}
}
if (isPropertyModified(cmp, PROPERTY_EMBED)) {
out.writeInt(PROPERTY_EMBED);
out.writeUTF(((EmbeddedContainer) cmp).getEmbed());
}
if (isPropertyModified(cmp, PROPERTY_UIID)) {
out.writeInt(PROPERTY_UIID);
out.writeUTF(cmp.getUIID());
}
if (isPropertyModified(cmp, PROPERTY_FOCUSABLE)) {
out.writeInt(PROPERTY_FOCUSABLE);
out.writeBoolean(cmp.isFocusable());
}
if (isPropertyModified(cmp, PROPERTY_ENABLED)) {
out.writeInt(PROPERTY_ENABLED);
out.writeBoolean(cmp.isEnabled());
}
if (isPropertyModified(cmp, PROPERTY_RTL)) {
out.writeInt(PROPERTY_RTL);
out.writeBoolean(cmp.isRTL());
}
if (isPropertyModified(cmp, PROPERTY_SCROLL_VISIBLE)) {
out.writeInt(PROPERTY_SCROLL_VISIBLE);
out.writeBoolean(cmp.isScrollVisible());
}
if (isPropertyModified(cmp, PROPERTY_PREFERRED_WIDTH)) {
out.writeInt(PROPERTY_PREFERRED_WIDTH);
out.writeInt(cmp.getPreferredW());
}
if (isPropertyModified(cmp, PROPERTY_PREFERRED_HEIGHT)) {
out.writeInt(PROPERTY_PREFERRED_HEIGHT);
out.writeInt(cmp.getPreferredH());
}
if (isPropertyModified(cmp, PROPERTY_TENSILE_DRAG_ENABLED)) {
out.writeInt(PROPERTY_TENSILE_DRAG_ENABLED);
out.writeBoolean(cmp.isTensileDragEnabled());
}
if (isPropertyModified(cmp, PROPERTY_TACTILE_TOUCH)) {
out.writeInt(PROPERTY_TACTILE_TOUCH);
out.writeBoolean(cmp.isTactileTouch());
}
if (isPropertyModified(cmp, PROPERTY_SNAP_TO_GRID)) {
out.writeInt(PROPERTY_SNAP_TO_GRID);
out.writeBoolean(cmp.isSnapToGrid());
}
if (isPropertyModified(cmp, PROPERTY_FLATTEN)) {
out.writeInt(PROPERTY_FLATTEN);
out.writeBoolean(cmp.isFlatten());
}
if (isPropertyModified(cmp, PROPERTY_CUSTOM)) {
for (String propName : cmp.getPropertyNames()) {
if (isCustomPropertyModified(cmp, propName) && !propName.startsWith("$")) {
out.writeInt(PROPERTY_CUSTOM);
out.writeUTF(propName);
Class type = getPropertyCustomType(cmp, propName);
Object value = cmp.getPropertyValue(propName);
if (value == null) {
out.writeBoolean(true);
continue;
}
out.writeBoolean(false);
if (type == String.class) {
out.writeUTF((String) value);
continue;
}
if (type == String[].class) {
String[] result = (String[]) value;
out.writeInt(result.length);
for (int i = 0; i < result.length; i++) {
out.writeUTF(result[i]);
}
continue;
}
if (type == String[][].class) {
String[][] result = (String[][]) value;
out.writeInt(result.length);
for (int i = 0; i < result.length; i++) {
out.writeInt(result[i].length);
for (int j = 0; j < result[i].length; j++) {
out.writeUTF(result[i][j]);
}
}
continue;
}
if (type == Integer.class) {
out.writeInt(((Number) value).intValue());
continue;
}
if (type == Long.class) {
out.writeLong(((Number) value).longValue());
continue;
}
if (type == Double.class) {
out.writeDouble(((Number) value).doubleValue());
continue;
}
if (type == Date.class) {
if (value == null) {
out.writeBoolean(false);
continue;
}
out.writeBoolean(true);
out.writeLong(((Date) value).getTime());
continue;
}
if (type == Float.class) {
out.writeFloat(((Number) value).floatValue());
continue;
}
if (type == Byte.class) {
out.writeByte(((Number) value).byteValue());
continue;
}
if (type == Boolean.class) {
out.writeBoolean(((Boolean) value).booleanValue());
continue;
}
if (type == com.codename1.ui.Image[].class) {
com.codename1.ui.Image[] result = (com.codename1.ui.Image[]) value;
out.writeInt(result.length);
for (int i = 0; i < result.length; i++) {
if (result[i] == null) {
out.writeUTF("");
} else {
String id = res.findId(result[i]);
if (id == null) {
out.writeUTF("");
} else {
out.writeUTF(id);
}
}
}
continue;
}
if (type == com.codename1.ui.Image.class) {
com.codename1.ui.Image result = (com.codename1.ui.Image) value;
if (result == null) {
out.writeUTF("");
} else {
String id = res.findId(result);
if (id == null) {
out.writeUTF("");
} else {
out.writeUTF(id);
}
}
continue;
}
if (type == com.codename1.ui.Container.class) {
out.writeUTF(((com.codename1.ui.Container) value).getName());
continue;
}
if (type == com.codename1.ui.list.CellRenderer.class) {
com.codename1.ui.list.GenericListCellRenderer g = (com.codename1.ui.list.GenericListCellRenderer) value;
if (g.getSelectedEven() == null) {
out.writeByte(2);
out.writeUTF(g.getSelected().getName());
out.writeUTF(g.getUnselected().getName());
} else {
out.writeByte(4);
out.writeUTF(g.getSelected().getName());
out.writeUTF(g.getUnselected().getName());
out.writeUTF(g.getSelectedEven().getName());
out.writeUTF(g.getUnselectedEven().getName());
}
continue;
}
if (type == Object[].class) {
Object[] arr = (Object[]) value;
out.writeInt(arr.length);
for (int iter = 0; iter < arr.length; iter++) {
Object o = arr[iter];
if (o instanceof String) {
out.writeByte(1);
out.writeUTF((String) o);
} else {
out.writeByte(2);
Hashtable h = (Hashtable) o;
out.writeInt(h.size());
for (Object key : h.keySet()) {
Object val = h.get(key);
if (val instanceof com.codename1.ui.Image) {
out.writeInt(2);
out.writeUTF((String) key);
out.writeUTF(res.findId(val));
} else {
out.writeInt(1);
out.writeUTF((String) key);
out.writeUTF((String) val);
}
}
}
}
continue;
}
// none of the above then its a char
out.writeChar(((Character) value).charValue());
}
}
}
out.writeInt(-1);
}
use of com.codename1.rad.models in project CodenameOne by codenameone.
the class CN1CSSCLI method compile.
private static void compile(File inputFile, File outputFile) throws IOException {
File baseDir = inputFile.getParentFile().getParentFile();
File checksumsFile = getChecksumsFile(baseDir);
if (!checksumsFile.exists()) {
saveChecksums(baseDir, new HashMap<String, String>());
}
if (!checksumsFile.exists()) {
throw new RuntimeException("Failed to create checksums file");
}
FileChannel channel = new RandomAccessFile(checksumsFile, "rw").getChannel();
FileLock lock = channel.lock();
try {
Map<String, String> checksums = loadChecksums(baseDir);
if (outputFile.exists() && !isMavenProject(inputFile)) {
String outputFileChecksum = getMD5Checksum(outputFile.getAbsolutePath());
String previousChecksum = checksums.get(inputFile.getName());
if (previousChecksum == null || !previousChecksum.equals(outputFileChecksum)) {
File backups = new File(inputFile.getParentFile(), ".backups");
backups.mkdirs();
File bak = new File(backups, outputFile.getName() + "." + System.currentTimeMillis() + ".bak");
Files.copy(outputFile.toPath(), bak.toPath(), StandardCopyOption.REPLACE_EXISTING);
System.out.println(outputFile + " has been modified since it was last compiled. Making copy at " + bak);
outputFile.delete();
}
}
if (outputFile.exists() && inputFile.lastModified() <= outputFile.lastModified()) {
System.out.println("File has not changed since last compile.");
return;
}
try {
URL url = inputFile.toURI().toURL();
// CSSTheme theme = CSSTheme.load(CSSTheme.class.getResource("test.css"));
CSSTheme theme = CSSTheme.load(url);
theme.cssFile = inputFile;
theme.resourceFile = outputFile;
JavaSEPort.setBaseResourceDir(outputFile.getParentFile());
WebViewProvider webViewProvider = new WebViewProvider() {
@Override
public BrowserComponent getWebView() {
if (web == null) {
if (!CN1Bootstrap.isCEFLoaded()) /* && !CN1Bootstrap.isJavaFXLoaded()*/
{
// to output the correct bounds so we are killing FX support. CEF only.
throw new MissingNativeBrowserException();
}
if (!CN.isEdt()) {
CN.callSerially(() -> {
getWebView();
});
int counter = 0;
while (web == null && counter++ < 50) {
Util.sleep(100);
}
return web;
}
web = new BrowserComponent();
ComponentSelector.select("*", web).add(web, true).selectAllStyles().setBgTransparency(0).setMargin(0).setPadding(0).setBorder(Border.createEmpty()).each(new ComponentClosure() {
@Override
public void call(Component c) {
c.setOpaque(false);
}
});
web.setOpaque(false);
Form f = new Form();
f.getContentPane().getStyle().setBgColor(0xff0000);
f.getContentPane().getStyle().setBgTransparency(0xff);
if (f.getToolbar() == null) {
f.setToolbar(new com.codename1.ui.Toolbar());
}
f.getToolbar().hideToolbar();
f.setLayout(new com.codename1.ui.layouts.BorderLayout());
f.add(CN.CENTER, web);
f.show();
}
return web;
}
};
File cacheFile = new File(theme.cssFile.getParentFile(), theme.cssFile.getName() + ".checksums");
if (outputFile.exists() && cacheFile.exists()) {
theme.loadResourceFile();
theme.loadSelectorCacheStatus(cacheFile);
}
theme.createImageBorders(webViewProvider);
theme.updateResources();
theme.save(outputFile);
theme.saveSelectorChecksums(cacheFile);
String checksum = getMD5Checksum(outputFile.getAbsolutePath());
checksums.put(inputFile.getName(), checksum);
saveChecksums(baseDir, checksums);
} catch (MalformedURLException ex) {
Logger.getLogger(CN1CSSCLI.class.getName()).log(Level.SEVERE, null, ex);
}
} finally {
if (lock != null) {
lock.release();
}
if (channel != null) {
channel.close();
}
}
}
use of com.codename1.rad.models in project CodenameOne by codenameone.
the class CN1CSSCompiler method scaleMultiImage.
public static EditableResources.MultiImage scaleMultiImage(int fromDPI, int toDPI, int scaledWidth, int scaledHeight, EditableResources.MultiImage multi) {
try {
int[] dpis = multi.getDpi();
com.codename1.ui.EncodedImage[] imgs = multi.getInternalImages();
int fromOffset = -1;
int toOffset = -1;
for (int iter = 0; iter < dpis.length; iter++) {
if (dpis[iter] == fromDPI) {
fromOffset = iter;
}
if (dpis[iter] == toDPI) {
toOffset = iter;
}
}
if (fromOffset == -1) {
return null;
}
EditableResources.MultiImage newImage = new EditableResources.MultiImage();
if (toOffset == -1) {
com.codename1.ui.EncodedImage[] newImages = new com.codename1.ui.EncodedImage[imgs.length + 1];
System.arraycopy(imgs, 0, newImages, 0, imgs.length);
toOffset = imgs.length;
int[] newDpis = new int[dpis.length + 1];
System.arraycopy(dpis, 0, newDpis, 0, dpis.length);
newDpis[toOffset] = toDPI;
newImage.setDpi(newDpis);
newImage.setInternalImages(newImages);
} else {
com.codename1.ui.EncodedImage[] newImages = new com.codename1.ui.EncodedImage[imgs.length];
System.arraycopy(multi.getInternalImages(), 0, newImages, 0, imgs.length);
newImage.setDpi(dpis);
newImage.setInternalImages(newImages);
}
com.codename1.ui.Image sourceImage = newImage.getInternalImages()[fromOffset];
BufferedImage buffer = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
buffer.setRGB(0, 0, sourceImage.getWidth(), sourceImage.getHeight(), sourceImage.getRGB(), 0, sourceImage.getWidth());
sourceImage.getRGB();
sourceImage.getWidth();
BufferedImage scaled = getScaledInstance(buffer, scaledWidth, scaledHeight);
ByteArrayOutputStream output = new ByteArrayOutputStream();
ImageIO.write(scaled, "png", output);
output.close();
byte[] bytes = output.toByteArray();
com.codename1.ui.EncodedImage encoded = com.codename1.ui.EncodedImage.create(bytes);
newImage.getInternalImages()[toOffset] = encoded;
return newImage;
} catch (IOException ex) {
ex.printStackTrace();
}
return null;
}
Aggregations