Search in sources :

Example 1 with ResourceEditorView

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));
    }
}
Also used : BufferedImage(java.awt.image.BufferedImage) EncodedImage(com.codename1.ui.EncodedImage) Image(com.codename1.ui.Image) MultiImageSVGEditor(com.codename1.designer.MultiImageSVGEditor) L10nEditor(com.codename1.designer.L10nEditor) ThemeEditor(com.codename1.designer.ThemeEditor) UserInterfaceEditor(com.codename1.designer.UserInterfaceEditor) Timeline(com.codename1.ui.animations.Timeline) DataEditor(com.codename1.designer.DataEditor) ImageMultiEditor(com.codename1.designer.ImageMultiEditor) TimelineEditor(com.codename1.designer.TimelineEditor) FontEditor(com.codename1.designer.FontEditor) ImageRGBEditor(com.codename1.designer.ImageRGBEditor)

Example 2 with ResourceEditorView

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);
    }
}
Also used : Image(java.awt.Image) BufferedImage(java.awt.image.BufferedImage) UIBuilderOverride(com.codename1.ui.util.UIBuilderOverride)

Example 3 with ResourceEditorView

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();
}
Also used : InputStream(java.io.InputStream) IOException(java.io.IOException) EditableResources(com.codename1.ui.util.EditableResources)

Example 4 with ResourceEditorView

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);
        }
    }
}
Also used : ByteArrayOutputStream(java.io.ByteArrayOutputStream) Point(java.awt.Point) IOException(java.io.IOException) EncodedImage(com.codename1.ui.EncodedImage) FileInputStream(java.io.FileInputStream) Point(java.awt.Point) BufferedImage(java.awt.image.BufferedImage) Timeline(com.codename1.ui.animations.Timeline) AnimationObject(com.codename1.ui.animations.AnimationObject) ImageReader(javax.imageio.ImageReader) File(java.io.File)

Example 5 with ResourceEditorView

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();
}
Also used : Hashtable(java.util.Hashtable) EditorFont(com.codename1.ui.EditorFont)

Aggregations

BufferedImage (java.awt.image.BufferedImage)3 IOException (java.io.IOException)3 EncodedImage (com.codename1.ui.EncodedImage)2 Timeline (com.codename1.ui.animations.Timeline)2 EditableResources (com.codename1.ui.util.EditableResources)2 InputStream (java.io.InputStream)2 Hashtable (java.util.Hashtable)2 DataEditor (com.codename1.designer.DataEditor)1 FontEditor (com.codename1.designer.FontEditor)1 ImageMultiEditor (com.codename1.designer.ImageMultiEditor)1 ImageRGBEditor (com.codename1.designer.ImageRGBEditor)1 L10nEditor (com.codename1.designer.L10nEditor)1 MultiImageSVGEditor (com.codename1.designer.MultiImageSVGEditor)1 ThemeEditor (com.codename1.designer.ThemeEditor)1 TimelineEditor (com.codename1.designer.TimelineEditor)1 UserInterfaceEditor (com.codename1.designer.UserInterfaceEditor)1 EditorFont (com.codename1.ui.EditorFont)1 Image (com.codename1.ui.Image)1 AnimationObject (com.codename1.ui.animations.AnimationObject)1 UIBuilderOverride (com.codename1.ui.util.UIBuilderOverride)1