use of com.codename1.ui.Container in project CodenameOne by codenameone.
the class LazyValueC method readCommand.
private void readCommand(DataInputStream in, Component c, Container parent, Resources res, boolean legacy) throws IOException {
String commandName = in.readUTF();
String commandImageName = in.readUTF();
String rollover = null;
String pressed = null;
String disabled = null;
if (!legacy) {
rollover = in.readUTF();
pressed = in.readUTF();
disabled = in.readUTF();
}
int commandId = in.readInt();
String commandAction = in.readUTF();
String commandArgument = "";
if (commandAction.equals("$Execute")) {
commandArgument = in.readUTF();
}
boolean isBack = in.readBoolean();
Command cmd = createCommandImpl(commandName, res.getImage(commandImageName), commandId, commandAction, isBack, commandArgument);
if (rollover != null && rollover.length() > 0) {
cmd.setRolloverIcon(res.getImage(rollover));
}
if (pressed != null && pressed.length() > 0) {
cmd.setPressedIcon(res.getImage(pressed));
}
if (disabled != null && disabled.length() > 0) {
cmd.setPressedIcon(res.getImage(pressed));
}
if (isBack) {
Form f = c.getComponentForm();
if (f != null) {
setBackCommand(f, cmd);
} else {
if (backCommands == null) {
backCommands = new Vector();
}
backCommands.addElement(cmd);
}
}
Button btn;
if (c instanceof Container) {
btn = (Button) ((Container) c).getLeadComponent();
} else {
btn = ((Button) c);
}
boolean e = btn.isEnabled();
btn.setCommand(cmd);
// special case since setting the command implicitly gets the enabled state from the command
if (!e) {
btn.setEnabled(false);
}
// no menu
if (c.getComponentForm() != null) {
btn.removeActionListener(getFormListenerInstance(parent, null));
}
cmd.putClientProperty(COMMAND_ARGUMENTS, commandArgument);
cmd.putClientProperty(COMMAND_ACTION, commandAction);
if (commandAction.length() > 0 && resourceFilePath == null || isKeepResourcesInRam()) {
resourceFile = res;
}
}
use of com.codename1.ui.Container in project CodenameOne by codenameone.
the class LazyValueC method postCreateComponents.
/**
* Invoked after the components were created to allow properties that require the entire
* tree to exist to update the component. This is useful for properties that point
* at other components.
*/
private void postCreateComponents(DataInputStream in, Container parent, Resources res) throws Exception {
// finds the component whose properties need to update
String name = in.readUTF();
Component lastComponent = null;
while (name.length() > 0) {
if (lastComponent == null || !lastComponent.getName().equals(name)) {
lastComponent = findByName(name, parent);
}
Component c = lastComponent;
int property = in.readInt();
modifyingProperty(c, property);
switch(property) {
case PROPERTY_COMMAND_LEGACY:
{
readCommand(in, c, parent, res, true);
break;
}
case PROPERTY_COMMAND:
{
readCommand(in, c, parent, res, false);
break;
}
case PROPERTY_LABEL_FOR:
c.setLabelForComponent((Label) findByName(in.readUTF(), parent));
break;
case PROPERTY_LEAD_COMPONENT:
((Container) c).setLeadComponent(findByName(in.readUTF(), parent));
break;
case PROPERTY_NEXT_FOCUS_UP:
c.setNextFocusUp(findByName(in.readUTF(), parent));
break;
case PROPERTY_NEXT_FOCUS_DOWN:
c.setNextFocusDown(findByName(in.readUTF(), parent));
break;
case PROPERTY_NEXT_FOCUS_LEFT:
c.setNextFocusLeft(findByName(in.readUTF(), parent));
break;
case PROPERTY_NEXT_FOCUS_RIGHT:
c.setNextFocusRight(findByName(in.readUTF(), parent));
break;
}
name = in.readUTF();
}
}
use of com.codename1.ui.Container in project CodenameOne by codenameone.
the class LazyValueC method createContainer.
Container createContainer(Resources res, String resourceName, EmbeddedContainer parentContainer) {
onCreateRoot(resourceName);
InputStream source = res.getUi(resourceName);
if (source == null) {
throw new RuntimeException("Resource doesn't exist within the current resource object: " + resourceName);
}
DataInputStream in = new DataInputStream(source);
try {
Hashtable h = null;
if (localComponentListeners != null) {
h = (Hashtable) localComponentListeners.get(resourceName);
}
Container c = (Container) createComponent(in, null, null, res, h, parentContainer);
c.setName(resourceName);
postCreateComponents(in, c, res);
// try to be smart about initializing the home form
if (homeForm == null) {
if (c instanceof Form) {
String nextForm = (String) c.getClientProperty("%next_form%");
if (nextForm != null) {
homeForm = nextForm;
} else {
homeForm = resourceName;
}
}
}
return c;
} catch (Exception ex) {
// If this happens its probably a serious bug
ex.printStackTrace();
return null;
}
}
use of com.codename1.ui.Container in project CodenameOne by codenameone.
the class LazyValueC method setContainerStateImpl.
private void setContainerStateImpl(Container cnt, Hashtable state) {
if (state != null) {
restoreComponentState(cnt, state);
String cmpName = (String) state.get(FORM_STATE_KEY_FOCUS);
if (cmpName == null) {
return;
}
Component c = findByName(cmpName, cnt);
if (c != null) {
c.requestFocus();
if (c instanceof List) {
Integer i = (Integer) state.get(FORM_STATE_KEY_SELECTION);
if (i != null) {
((List) c).setSelectedIndex(i.intValue());
}
}
}
}
}
use of com.codename1.ui.Container in project CodenameOne by codenameone.
the class LazyValueC method formToContainer.
Container formToContainer(Form f) {
Container cnt = new Container(f.getContentPane().getLayout());
if (f.getContentPane().getLayout() instanceof BorderLayout || f.getContentPane().getLayout() instanceof TableLayout) {
while (f.getContentPane().getComponentCount() > 0) {
Component src = f.getContentPane().getComponentAt(0);
Object o = f.getContentPane().getLayout().getComponentConstraint(src);
f.getContentPane().removeComponent(src);
cnt.addComponent(o, src);
}
} else {
while (f.getContentPane().getComponentCount() > 0) {
Component src = f.getContentPane().getComponentAt(0);
f.getContentPane().removeComponent(src);
cnt.addComponent(src);
}
}
return cnt;
}
Aggregations