use of com.codename1.designer.ResourceEditorView in project CodenameOne by codenameone.
the class EditableResources method getResourceEditor.
public JComponent getResourceEditor(String name, ResourceEditorView view) {
byte magic = getResourceType(name);
switch(magic) {
case MAGIC_IMAGE:
case MAGIC_IMAGE_LEGACY:
Image i = getImage(name);
if (getResourceObject(name) instanceof MultiImage) {
ImageMultiEditor tl = new ImageMultiEditor(this, name, view);
tl.setImage((MultiImage) getResourceObject(name));
return tl;
}
if (i instanceof Timeline) {
TimelineEditor tl = new TimelineEditor(this, name, view);
tl.setImage((Timeline) i);
return tl;
}
if (i.isSVG()) {
MultiImageSVGEditor img = new MultiImageSVGEditor(this, name);
img.setImage(i);
return img;
}
ImageRGBEditor img = new ImageRGBEditor(this, name, view);
img.setImage(i);
return img;
case MAGIC_TIMELINE:
TimelineEditor tl = new TimelineEditor(this, name, view);
tl.setImage((Timeline) getImage(name));
return tl;
case MAGIC_THEME:
case MAGIC_THEME_LEGACY:
ThemeEditor theme = new ThemeEditor(this, name, getTheme(name), view);
return theme;
case MAGIC_FONT:
case MAGIC_FONT_LEGACY:
case MAGIC_INDEXED_FONT_LEGACY:
FontEditor fonts = new FontEditor(this, getFont(name), name);
return fonts;
case MAGIC_DATA:
DataEditor data = new DataEditor(this, name);
return data;
case MAGIC_UI:
UserInterfaceEditor uie = new UserInterfaceEditor(name, this, view.getProjectGeneratorSettings(), view);
return uie;
case MAGIC_L10N:
// we are cheating this isn't a theme but it should work since
// this is a hashtable that will include the nested locales
L10nEditor l10n = new L10nEditor(this, name);
return l10n;
default:
throw new IllegalArgumentException("Unrecognized magic number: " + Integer.toHexString(magic & 0xff));
}
}
use of com.codename1.designer.ResourceEditorView in project CodenameOne by codenameone.
the class ResourceEditorApp method startup.
/**
* At startup create and show the main frame of the application.
*/
@Override
protected void startup() {
ri = new ResourceEditorView(this, fileToLoad);
show(ri);
Image large = Toolkit.getDefaultToolkit().createImage(getClass().getResource("/application64.png"));
Image small = Toolkit.getDefaultToolkit().createImage(getClass().getResource("/application48.png"));
try {
// setIconImages is only available in JDK 1.6
getMainFrame().setIconImages(Arrays.asList(new Image[] { large, small }));
} catch (Throwable err) {
getMainFrame().setIconImage(small);
}
}
use of com.codename1.designer.ResourceEditorView in project CodenameOne by codenameone.
the class AddUIResource method addResource.
// GEN-LAST:event_templateActionPerformed
public String addResource(EditableResources res, ResourceEditorView view) {
String newName = name.getText();
for (String r : res.getResourceNames()) {
if (r.equalsIgnoreCase(newName)) {
JOptionPane.showMessageDialog(this, "A resource called: " + newName + " already exists\nYou must delete the resource first.", "Add Resource", JOptionPane.ERROR_MESSAGE);
return null;
}
}
Object ui = null;
InputStream is = getClass().getResourceAsStream("/templates/" + template.getSelectedItem().toString() + ".res");
if (is != null) {
try {
EditableResources r = new EditableResources();
r.openFile(is);
is.close();
ui = r.getResourceObject("Main");
r.remove("Main");
view.checkDuplicateResourcesLoop(r, res.getImageResourceNames(), r.getImageResourceNames(), "Rename Image", "Image ", true);
view.checkDuplicateResourcesLoop(r, res.getL10NResourceNames(), r.getL10NResourceNames(), "Rename Localization", "Localization ", true);
view.checkDuplicateResourcesLoop(r, res.getDataResourceNames(), r.getDataResourceNames(), "Rename Data", "Data ", true);
view.checkDuplicateResourcesLoop(r, res.getUIResourceNames(), r.getUIResourceNames(), "Rename GUI", "GUI ", true);
view.checkDuplicateResourcesLoop(r, res.getFontResourceNames(), r.getFontResourceNames(), "Rename Font", "Font ", true);
for (String s : r.getImageResourceNames()) {
res.setImage(s, r.getImage(s));
}
for (String s : r.getL10NResourceNames()) {
res.setL10N(s, (Hashtable) r.getResourceObject(s));
}
for (String s : r.getDataResourceNames()) {
res.setData(s, (byte[]) r.getResourceObject(s));
}
for (String s : r.getUIResourceNames()) {
res.setUi(s, (byte[]) r.getResourceObject(s));
}
for (String s : r.getFontResourceNames()) {
res.setFont(s, r.getFont(s));
}
} catch (IOException err) {
err.printStackTrace();
}
}
res.setUi(name.getText(), (byte[]) ui);
view.setSelectedResource(name.getText());
return name.getText();
}
use of com.codename1.designer.ResourceEditorView 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.designer.ResourceEditorView in project CodenameOne by codenameone.
the class AddResourceDialog method addResource.
public String addResource(EditableResources res, ResourceEditorView view) {
// "Image", "Animation", "Font", "Theme", "Data", "Localization (L10N)"
String newName = name.getText();
for (String r : res.getResourceNames()) {
if (r.equalsIgnoreCase(newName)) {
JOptionPane.showMessageDialog(this, "A resource called: " + newName + " already exists\nYou must delete the resource first.", "Add Resource", JOptionPane.ERROR_MESSAGE);
return null;
}
}
switch(type.getSelectedIndex()) {
case // image
IMAGE:
ImageRGBEditor imageEditor = new ImageRGBEditor(res, name.getText(), view);
imageEditor.selectFile();
view.setSelectedResource(name.getText());
break;
case MULTI_IMAGE:
ImageMultiEditor multiImageEditor = new ImageMultiEditor(res, name.getText(), view);
view.setSelectedResource(name.getText());
break;
case TIMELINE:
new TimelineEditor(res, name.getText(), view);
view.setSelectedResource(name.getText());
break;
case // animation
ANIMATION:
TimelineEditor.selectFile(view, res, name.getText());
/*ImageEditor animationEditor = new ImageEditor(res, name.getText());
animationEditor.setAnimation(true);
animationEditor.selectFile(view);*/
break;
case // font
FONT:
new FontEditor(res, new EditorFont(com.codename1.ui.Font.createSystemFont(com.codename1.ui.Font.FACE_SYSTEM, com.codename1.ui.Font.STYLE_PLAIN, com.codename1.ui.Font.SIZE_MEDIUM), null, "Arial-plain-12", true, RenderingHints.VALUE_TEXT_ANTIALIAS_ON, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:!@/\\*()[]{}|#$%^&<>?'\"+- "), name.getText()).createFont();
view.setSelectedResource(name.getText());
break;
case // theme
THEME:
res.setTheme(name.getText(), new Hashtable());
view.setSelectedResource(name.getText());
// ResourceEditorView.expandAndSelect(tree, name.getText());
break;
case // data
DATA:
DataEditor dataEditor = new DataEditor(res, name.getText());
dataEditor.selectDataFile(view);
view.setSelectedResource(name.getText());
break;
case // localization
LOCALIZATION:
Hashtable h = new Hashtable();
Hashtable local = new Hashtable();
local.put("cancel", "Cancel");
local.put("ok", "OK");
local.put("menu", "Menu");
local.put("select", "Select");
local.put("edit", "Edit");
h.put("en", local);
res.setL10N(name.getText(), h);
view.setSelectedResource(name.getText());
// ResourceEditorView.expandAndSelect(tree, name.getText());
break;
case UI:
UserInterfaceEditor uiEditor = new UserInterfaceEditor(name.getText(), res, view.getProjectGeneratorSettings(), view);
view.setSelectedResource(name.getText());
break;
}
return name.getText();
}
Aggregations