Author: lemovice
Date: Sun Dec  8 01:15:19 2013
New Revision: 4711

Log:
create ImageBean panel, remain problems with the FileChooser file type selection

Added:
   
trunk/AncestrisExtensions/editors.genealogyeditor/src/ancestris/modules/editors/genealogyeditor/beans/ImageBean.form
   
trunk/AncestrisExtensions/editors.genealogyeditor/src/ancestris/modules/editors/genealogyeditor/beans/ImageBean.java
Modified:
   
trunk/AncestrisExtensions/editors.genealogyeditor/src/ancestris/modules/editors/genealogyeditor/beans/Bundle.properties

Modified: 
trunk/AncestrisExtensions/editors.genealogyeditor/src/ancestris/modules/editors/genealogyeditor/beans/Bundle.properties
==============================================================================
--- 
trunk/AncestrisExtensions/editors.genealogyeditor/src/ancestris/modules/editors/genealogyeditor/beans/Bundle.properties
     (original)
+++ 
trunk/AncestrisExtensions/editors.genealogyeditor/src/ancestris/modules/editors/genealogyeditor/beans/Bundle.properties
     Sun Dec  8 01:15:19 2013
@@ -5,3 +5,5 @@
 DateBean.jMenuItem1.text=jMenuItem1
 DateBean.jMenuItem2.text=jMenuItem2
 DateBean.jButton2.text=jButton2
+ImageBean.toolTipText=Double click on the image to change it
+ImageBean.fileType=Images

Added: 
trunk/AncestrisExtensions/editors.genealogyeditor/src/ancestris/modules/editors/genealogyeditor/beans/ImageBean.form
==============================================================================
--- (empty file)
+++ 
trunk/AncestrisExtensions/editors.genealogyeditor/src/ancestris/modules/editors/genealogyeditor/beans/ImageBean.form
        Sun Dec  8 01:15:19 2013
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.4" maxVersion="1.8" 
type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+  <Properties>
+    <Property name="toolTipText" type="java.lang.String" 
editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+      <ResourceString 
bundle="ancestris/modules/editors/genealogyeditor/beans/Bundle.properties" 
key="ImageBean.toolTipText" 
replaceFormat="java.text.MessageFormat.format(java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;),
 {arguments})"/>
+    </Property>
+    <Property name="minimumSize" type="java.awt.Dimension" 
editor="org.netbeans.beaninfo.editors.DimensionEditor">
+      <Dimension value="[30, 40]"/>
+    </Property>
+    <Property name="preferredSize" type="java.awt.Dimension" 
editor="org.netbeans.beaninfo.editors.DimensionEditor">
+      <Dimension value="[150, 200]"/>
+    </Property>
+    <Property name="requestFocusEnabled" type="boolean" value="false"/>
+  </Properties>
+  <Events>
+    <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" 
parameters="java.awt.event.MouseEvent" handler="formMouseClicked"/>
+  </Events>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" 
value="1"/>
+    <AuxValue name="FormSettings_autoSetComponentName" 
type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" 
value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" 
type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" 
value="true"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" 
value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" 
type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" 
value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" 
value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <EmptySpace min="0" pref="150" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <EmptySpace min="0" pref="200" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+</Form>

Added: 
trunk/AncestrisExtensions/editors.genealogyeditor/src/ancestris/modules/editors/genealogyeditor/beans/ImageBean.java
==============================================================================
--- (empty file)
+++ 
trunk/AncestrisExtensions/editors.genealogyeditor/src/ancestris/modules/editors/genealogyeditor/beans/ImageBean.java
        Sun Dec  8 01:15:19 2013
@@ -0,0 +1,151 @@
+package ancestris.modules.editors.genealogyeditor.beans;
+
+import genj.gedcom.*;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.imageio.ImageIO;
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileNameExtensionFilter;
+import org.openide.util.Exceptions;
+import org.openide.util.NbBundle;
+
+/**
+ *
+ * @author dominique
+ */
+public class ImageBean extends javax.swing.JPanel {
+
+    private final static Logger logger = 
Logger.getLogger(ImageBean.class.getName(), null);
+    private boolean imageModified = false;
+    private Property root;
+    Property multimediaObject;
+    private BufferedImage resizedImage;
+    private File imageFile;
+
+    /**
+     * Creates new form ImageBean
+     */
+    public ImageBean() {
+        super();
+        initComponents();
+    }
+
+    /**
+     * This method is called from within the constructor to initialize the 
form.
+     * WARNING: Do NOT modify this code. The content of this method is always
+     * regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated 
Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        
setToolTipText(java.text.MessageFormat.format(java.util.ResourceBundle.getBundle("ancestris/modules/editors/genealogyeditor/beans/Bundle").getString("ImageBean.toolTipText"),
 new Object[] {})); // NOI18N
+        setMinimumSize(new java.awt.Dimension(30, 40));
+        setPreferredSize(new java.awt.Dimension(150, 200));
+        setRequestFocusEnabled(false);
+        addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                formMouseClicked(evt);
+            }
+        });
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+        this.setLayout(layout);
+        layout.setHorizontalGroup(
+            
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 150, Short.MAX_VALUE)
+        );
+        layout.setVerticalGroup(
+            
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 200, Short.MAX_VALUE)
+        );
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void formMouseClicked(java.awt.event.MouseEvent evt) 
{//GEN-FIRST:event_formMouseClicked
+        FileNameExtensionFilter imageFileFilter = new 
FileNameExtensionFilter(NbBundle.getMessage(ImageBean.class, 
"ImageBean.fileType"), "jpeg");
+        JFileChooser imageFileChooser = new JFileChooser();
+
+        imageFileChooser.setFileFilter(imageFileFilter);
+        imageFileChooser.setAcceptAllFileFilterUsed(true);
+        imageFileChooser.setSelectedFile(imageFile);
+        if (imageFileChooser.showOpenDialog(null) == 
JFileChooser.APPROVE_OPTION) {
+            imageFile = imageFileChooser.getSelectedFile();
+            try {
+                BufferedImage loadImage = ImageIO.read(imageFile);
+                resizedImage = resizeImage(loadImage, 150, 200);
+                this.repaint();
+            } catch (IOException ex) {
+                Exceptions.printStackTrace(ex);
+            } finally {
+                imageModified = true;
+            }
+        }
+    }//GEN-LAST:event_formMouseClicked
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    // End of variables declaration//GEN-END:variables
+    public void setImage(Property root, Property multimediaObject) {
+        this.root = root;
+        this.multimediaObject = multimediaObject;
+
+        if (multimediaObject != null) {
+            Property file = multimediaObject.getProperty("FILE", true);
+            if (file instanceof PropertyFile) {
+                imageFile = ((PropertyFile) file).getFile();
+                try {
+                    BufferedImage loadImage = ImageIO.read(imageFile);
+                    resizedImage = resizeImage(loadImage, 150, 200);
+                } catch (IOException ex) {
+                    Exceptions.printStackTrace(ex);
+                }
+            }
+        }
+    }
+
+    public BufferedImage resizeImage(BufferedImage img, int newW, int newH) {
+        int w = img.getWidth();
+        int h = img.getHeight();
+        BufferedImage dimg = new BufferedImage(newW, newH, img.getType());
+        Graphics2D g = dimg.createGraphics();
+        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, 
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+        g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);
+        g.dispose();
+        return dimg;
+    }
+
+    public void commit() {
+        logger.log(Level.INFO, "Commiting ...");
+        try {
+            root.getGedcom().doUnitOfWork(new UnitOfWork() {
+
+                @Override
+                public void perform(Gedcom gedcom) throws GedcomException {
+                    if (multimediaObject != null && imageModified == true) {
+                        Property file = multimediaObject.getProperty("FILE", 
true);
+                        if (file instanceof PropertyFile) {
+                            logger.log(Level.INFO, "Update property FILE");
+
+                            ((PropertyFile) file).addFile(imageFile);
+                        }
+                    }
+                }
+            }); // end of doUnitOfWork
+        } catch (GedcomException ex) {
+            logger.log(Level.SEVERE, ex.getMessage());
+        }
+
+        logger.log(Level.INFO, "... finished");
+    }
+
+    @Override
+    protected void paintComponent(Graphics g) {
+        super.paintComponent(g);
+        g.drawImage(resizedImage, 0, 0, null);
+    }
+}

---------------------------------------------------------------------
Site Web Ancestris : http://www.ancestris.org

<*> Pour vous desinscrire de cette liste, envoyez un mail a :
              [email protected]
<*> Pour obtenir de l'aide sur les commandes de la liste :
              [email protected]

Pour obtenir tous les messages lies a ce fil de discussion, cliquez sur le 
lien ci-dessous, cela ouvrira votre logiciel de messagerie. Il vous suffira 
d'envoyer le message :
              [email protected]

Reply via email to