use of com.codename1.rad.models in project CodenameOne by codenameone.
the class TimelineEditor method cloneCurrentTimeline.
// </editor-fold>//GEN-END:initComponents
private Timeline cloneCurrentTimeline() {
Timeline t = (Timeline) res.getImage(name);
AnimationObject[] arr = new AnimationObject[t.getAnimationCount()];
for (int iter = 0; iter < arr.length; iter++) {
arr[iter] = t.getAnimation(iter);
}
Timeline nt = Timeline.createTimeline(getValue(duration), arr, new com.codename1.ui.geom.Dimension(getValue(width), getValue(height)));
nt.setPause(t.isPause());
nt.setTime(t.getTime());
return nt;
}
use of com.codename1.rad.models in project CodenameOne by codenameone.
the class TimelineEditor method moveUpActionPerformed.
// GEN-LAST:event_duplicateObjectActionPerformed
private void moveUpActionPerformed(java.awt.event.ActionEvent evt) {
// GEN-FIRST:event_moveUpActionPerformed
int i = animationObjectList.getSelectedRow();
Timeline t = cloneCurrentTimeline();
AnimationObject[] animations = new AnimationObject[t.getAnimationCount()];
for (int iter = 0; iter < animations.length; iter++) {
animations[iter] = t.getAnimation(iter);
}
AnimationObject o = animations[i - 1];
animations[i - 1] = animations[i];
animations[i] = o;
Timeline nt = Timeline.createTimeline(getValue(duration), animations, new com.codename1.ui.geom.Dimension(getValue(width), getValue(height)));
nt.setPause(t.isPause());
setImage(nt);
moveUp.setEnabled(i > 1);
moveDown.setEnabled(true);
animationObjectList.getSelectionModel().setSelectionInterval(i - 1, i - 1);
}
use of com.codename1.rad.models in project CodenameOne by codenameone.
the class TimelineEditor method removeAnimationObjectActionPerformed.
// GEN-LAST:event_addAnimationObjectActionPerformed
private void removeAnimationObjectActionPerformed(java.awt.event.ActionEvent evt) {
// GEN-FIRST:event_removeAnimationObjectActionPerformed
Timeline t = (Timeline) res.getImage(name);
AnimationObject[] animations = new AnimationObject[t.getAnimationCount() - 1];
int offset = 0;
for (int iter = 0; iter < t.getAnimationCount(); iter++) {
if (iter != animationObjectList.getSelectedRow()) {
animations[offset] = t.getAnimation(iter);
offset++;
}
}
((AnimationObjectTableModel) animationObjectList.getModel()).remove(animationObjectList.getSelectedRow());
Timeline nt = Timeline.createTimeline(getValue(duration), animations, new com.codename1.ui.geom.Dimension(getValue(width), getValue(height)));
nt.setPause(t.isPause());
setImage(nt);
animationObjectList.clearSelection();
duplicateObject.setEnabled(false);
moveDown.setEnabled(false);
moveUp.setEnabled(false);
removeAnimationObject.setEnabled(false);
}
use of com.codename1.rad.models in project CodenameOne by codenameone.
the class TimelineEditor method selectFile.
/**
* Selects a gif file using a file chooser and converts it to a timeline
*/
public static void selectFile(ResourceEditorView view, EditableResources res, String timelineName) {
File[] files = ResourceEditorView.showOpenFileChooser("Images", ".gif");
if (files != null) {
File sel = files[0];
if (timelineName == null) {
timelineName = sel.getName();
}
Preferences.userNodeForPackage(view.getClass()).put("lastDir", sel.getParentFile().getAbsolutePath());
ImageReader iReader = ImageIO.getImageReadersBySuffix("gif").next();
try {
iReader.setInput(ImageIO.createImageInputStream(new FileInputStream(sel)));
int frames = iReader.getNumImages(true);
AnimationObject[] anims = new AnimationObject[frames];
int currentTime = 0;
for (int frameIter = 0; frameIter < frames; frameIter++) {
BufferedImage currentImage = iReader.read(frameIter);
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ImageIO.write(currentImage, "png", bo);
bo.close();
// create a PNG image in the resource file
String label = sel.getName() + " frame:" + frameIter;
EncodedImage i = EncodedImage.create(bo.toByteArray());
res.setImage(label, i);
int duration = Math.max(40, AnimationImpl.getFrameTime(iReader, frameIter));
Point pos = AnimationImpl.getPixelOffsets(iReader, frameIter);
anims[frameIter] = AnimationObject.createAnimationImage(i, pos.x, pos.y);
anims[frameIter].setStartTime(currentTime);
anims[frameIter].setEndTime(100000000);
String disposeMethod = getDisposalMethod(iReader, frameIter);
if (disposeMethod != null) {
if ("restoreToBackgroundColor".equals(disposeMethod)) {
if (frameIter + 1 < frames) {
int t = Math.max(40, AnimationImpl.getFrameTime(iReader, frameIter + 1));
anims[frameIter].setEndTime(currentTime + t);
} else {
anims[frameIter].setEndTime(currentTime + duration);
}
// for(int iter = frameIter ; iter >= 0 ; iter--) {
// anims[iter].setEndTime(currentTime);
// }
}
// "none" |
// "doNotDispose" | "restoreToBackgroundColor" |
// "restoreToPrevious"
}
currentTime += duration;
}
Timeline t = Timeline.createTimeline(currentTime, anims, new com.codename1.ui.geom.Dimension(iReader.getWidth(0), iReader.getHeight(0)));
res.setImage(timelineName, t);
view.setSelectedResource(timelineName);
} catch (IOException err) {
err.printStackTrace();
JOptionPane.showMessageDialog(JFrame.getFrames()[0], "Error reading file " + err, "IO Error", JOptionPane.ERROR_MESSAGE);
}
}
}
use of com.codename1.rad.models in project CodenameOne by codenameone.
the class UserInterfaceEditor method appendComponentXMLBody.
private static void appendComponentXMLBody(com.codename1.ui.Container containerInstance, com.codename1.ui.Component cmp, StringBuilder build, EditableResources res, String indent) {
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) {
build.append(indent);
build.append("<layoutConstraint value=\"");
build.append((String) l.getComponentConstraint(cmp));
build.append("\" />\n");
} else {
if (l instanceof com.codename1.ui.table.TableLayout) {
build.append(indent);
com.codename1.ui.table.TableLayout.Constraint con = (com.codename1.ui.table.TableLayout.Constraint) l.getComponentConstraint(cmp);
build.append("<layoutConstraint row=\"");
build.append(getInt("row", con.getClass(), con));
build.append("\" column=\"");
build.append(getInt("column", con.getClass(), con));
build.append("\" height=\"");
build.append(getInt("height", con.getClass(), con));
build.append("\" width=\"");
build.append(getInt("width", con.getClass(), con));
build.append("\" align=\"");
build.append(getInt("align", con.getClass(), con));
build.append("\" spanHorizontal=\"");
build.append(getInt("spanHorizontal", con.getClass(), con));
build.append("\" valign=\"");
build.append(getInt("valign", con.getClass(), con));
build.append("\" spanVertical=\"");
build.append(getInt("spanVertical", con.getClass(), con));
build.append("\" />\n");
}
}
}
}
// don't persist children of subclasses like Table etc.
if (cmp.getClass() == com.codename1.ui.Container.class || cmp instanceof com.codename1.ui.Form || cmp instanceof com.codename1.ui.ComponentGroup) {
com.codename1.ui.Container cnt = (com.codename1.ui.Container) cmp;
if (cnt instanceof com.codename1.ui.Form) {
cnt = ((com.codename1.ui.Form) cnt).getContentPane();
}
for (int iter = 0; iter < cnt.getComponentCount(); iter++) {
persistToXML(containerInstance, cnt.getComponentAt(iter), build, res, indent);
}
}
if (cmp instanceof com.codename1.ui.List && !(cmp instanceof com.codename1.components.RSSReader)) {
com.codename1.ui.List lst = (com.codename1.ui.List) cmp;
for (int iter = 0; iter < lst.getModel().getSize(); iter++) {
Object o = lst.getModel().getItemAt(iter);
appendMapOrString(o, build, indent, res);
}
}
if (isPropertyModified(cmp, PROPERTY_CUSTOM)) {
for (String propName : cmp.getPropertyNames()) {
if (isCustomPropertyModified(cmp, propName) && !propName.startsWith("$")) {
build.append(indent);
build.append("<custom name=\"");
build.append(propName);
Class type = getPropertyCustomType(cmp, propName);
Object value = cmp.getPropertyValue(propName);
if (value == null) {
build.append("\" />\n");
continue;
}
if (type.isArray()) {
// 2d array
if (type.getComponentType().isArray()) {
build.append("\" type=\"");
build.append(type.getComponentType().getComponentType().getName());
build.append("\" array=\"true\" dimensions=\"2");
} else {
build.append("\" type=\"");
build.append(type.getComponentType().getName());
build.append("\" array=\"true\" dimensions=\"1");
}
} else {
build.append("\" type=\"");
build.append(type.getName());
}
build.append("\" ");
if (type == String.class) {
build.append("value=\"");
build.append(xmlize((String) value));
build.append("\" />\n");
continue;
}
if (type == String[].class) {
build.append(">\n");
String[] result = (String[]) value;
for (int i = 0; i < result.length; i++) {
build.append(indent);
build.append(" ");
build.append("<str>");
build.append(xmlize(result[i]));
build.append("</str>\n");
}
build.append(indent);
build.append("</custom>\n");
continue;
}
if (type == String[][].class) {
String[][] result = (String[][]) value;
build.append(">\n");
for (int i = 0; i < result.length; i++) {
build.append(indent);
build.append(" ");
build.append("<arr>");
for (int j = 0; j < result[i].length; j++) {
build.append(indent);
build.append(" ");
build.append("<str>");
build.append(xmlize(result[i][j]));
build.append("</str>\n");
}
build.append(indent);
build.append(" ");
build.append("</arr>\n");
}
build.append(indent);
build.append("</custom>\n");
continue;
}
if (type == Integer.class) {
build.append("value=\"");
build.append(((Number) value).intValue());
build.append("\" />\n");
continue;
}
if (type == Long.class) {
build.append("value=\"");
build.append(((Number) value).longValue());
build.append("\" />\n");
continue;
}
if (type == Double.class) {
build.append("value=\"");
build.append(((Number) value).doubleValue());
build.append("\" />\n");
continue;
}
if (type == Date.class) {
build.append("value=\"");
build.append(((Date) value).getTime());
build.append("\" />\n");
continue;
}
if (type == Float.class) {
build.append("value=\"");
build.append(((Number) value).floatValue());
build.append("\" />\n");
continue;
}
if (type == Byte.class) {
build.append("value=\"");
build.append(((Number) value).byteValue());
build.append("\" />\n");
continue;
}
if (type == Boolean.class) {
build.append("value=\"");
build.append(((Boolean) value).booleanValue());
build.append("\" />\n");
continue;
}
if (type == com.codename1.ui.Image[].class) {
com.codename1.ui.Image[] result = (com.codename1.ui.Image[]) value;
build.append(">\n");
for (int i = 0; i < result.length; i++) {
build.append(indent);
build.append(" ");
if (result[i] == null) {
build.append("<str/>\n");
} else {
String id = res.findId(result[i]);
if (id == null) {
build.append("<str/>\n");
} else {
build.append("<str>");
build.append(xmlize(id));
build.append("</str>\n");
}
}
}
build.append(indent);
build.append("</custom>\n");
continue;
}
if (type == com.codename1.ui.Image.class) {
com.codename1.ui.Image result = (com.codename1.ui.Image) value;
String id = res.findId(result);
if (id != null) {
build.append("value=\"");
build.append(xmlize(id));
}
build.append("\" />\n");
continue;
}
if (type == com.codename1.ui.Container.class) {
build.append("value=\"");
build.append(xmlize(((com.codename1.ui.Container) value).getName()));
build.append("\" />\n");
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) {
build.append(" selectedRenderer=\"");
build.append(xmlize(g.getSelected().getName()));
build.append("\" unselectedRenderer=\"");
build.append(xmlize(g.getUnselected().getName()));
build.append("\" ");
} else {
build.append(" selectedRenderer=\"");
build.append(xmlize(g.getSelected().getName()));
build.append("\" unselectedRenderer=\"");
build.append(xmlize(g.getUnselected().getName()));
build.append(" selectedRendererEven=\"");
build.append(xmlize(g.getSelectedEven().getName()));
build.append("\" unselectedRendererEven=\"");
build.append(xmlize(g.getUnselectedEven().getName()));
build.append("\" ");
}
build.append("\" />\n");
continue;
}
if (type == Object[].class) {
build.append(">\n");
Object[] arr = (Object[]) value;
for (int iter = 0; iter < arr.length; iter++) {
Object o = arr[iter];
appendMapOrString(o, build, indent, res);
}
build.append(indent);
build.append("</custom>\n");
continue;
}
// none of the above then its a char
build.append("value=\"");
build.append(xmlize("" + ((Character) value).charValue()));
build.append("\" />\n");
}
}
}
}
Aggregations