Ignore:
Timestamp:
2010-10-30T11:31:42+02:00 (14 years ago)
Author:
postfix
Message:
 
Location:
applications/editors/josm/plugins/smed_fw
Files:
4 added
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/smed_fw/build.xml

    r23895 r23913  
    4040      ** should not be necessary to change the following properties
    4141     -->
    42         <property name="josm" location="../../core/dist/josm-custom.jar" />
     42        <property name="josm" location="core/dist/josm-custom.jar" />
    4343        <property name="felix"                                  location="core/dist/felix.jar"/>
    4444        <property name="plugin.build.dir" value="build/" />
     
    104104                        </fileset>
    105105                </copy>
     106               
     107                <copy file="${felix}" todir="${plugin.build.dir}" />
     108               
    106109                <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}">
    107110                        <!--
     
    125128                                -->
    126129                                <attribute name="Plugin-Version" value="${version.entry.commit.revision}" />
     130                                <attribute name="Class-Path" value="bin/felix.jar"/>
    127131
    128132                        </manifest>
  • applications/editors/josm/plugins/smed_fw/src/smed_fw/SmedFW.java

    r23895 r23913  
    11package smed_fw;
    22
    3 import java.util.ArrayList;
    4 import java.util.HashMap;
    5 import java.util.List;
    6 import java.util.Map;
     3import java.io.BufferedInputStream;
     4import java.io.BufferedOutputStream;
     5import java.io.File;
     6import java.io.FileOutputStream;
     7import java.io.IOException;
     8import java.util.Enumeration;
     9import java.util.jar.JarEntry;
     10import java.util.jar.JarFile;
    711
    8 import org.apache.felix.framework.Felix;
    9 import org.apache.felix.framework.util.FelixConstants;
     12import org.openstreetmap.josm.Main;
     13import org.openstreetmap.josm.gui.MapFrame;
    1014import org.openstreetmap.josm.plugins.Plugin;
    1115import org.openstreetmap.josm.plugins.PluginInformation;
    12 import org.osgi.framework.Bundle;
    13 import org.osgi.framework.BundleActivator;
    14 import org.osgi.framework.BundleContext;
    15 import org.osgi.framework.BundleException;
    1616
    17 public class SmedFW extends Plugin implements BundleActivator{
     17import smed_fw.io.JARFileFilter;
     18import smed_fw.io.SmedFWFile;
    1819
    19         private BundleContext context;
    20         private Felix felix;
     20public class SmedFW extends Plugin {
     21       
     22        public static final String FW_BIN_DIR                           = "bin";
     23        public static final String FW_SMED_JAR                  = "smed_fw.jar";
     24        public static final String FW_NAME                              = "felix.jar";
     25        public static final String FW_BUNDLE_LOCATION           = "fwplug";
    2126       
    2227        public SmedFW(PluginInformation info) {
    2328                super(info);
     29
     30        JarEntry e = null;
     31        BufferedInputStream inp = null;
     32        byte[] buffer = new byte[16384];
     33        int len;
     34
     35        String eName = null;
     36                String pluginDirName = Main.pref.getPluginsDirectory().getAbsolutePath() + "/";
     37                File fwDir = new File(pluginDirName + FW_BIN_DIR);
     38
     39        if(!fwDir.exists()) fwDir.mkdir();
     40       
     41                SmedFWFile fwplugDir = new SmedFWFile(pluginDirName + FW_BUNDLE_LOCATION);
     42                if(!fwplugDir.exists()) fwplugDir.mkdir();
    2443               
    25                 init();
     44                File[] jars = fwplugDir.listFiles(new JARFileFilter());
     45
     46                // extract framework and plugins
     47                try {
     48                        JarFile file = new JarFile(pluginDirName  + FW_SMED_JAR);
     49
     50                        boolean fwFound = false;
     51                        FileOutputStream pfos = null;
     52                        Enumeration<JarEntry> ent = file.entries();
     53            while(ent.hasMoreElements()) {
     54                e = ent.nextElement();
     55                eName = e.getName();
     56               
     57                if(eName.endsWith(".jar")) {
     58                        if(eName.equals(FW_NAME)) {
     59                                pfos = new FileOutputStream(pluginDirName + FW_BIN_DIR + "/" + FW_NAME);
     60                                fwFound = true;
     61                        }
     62                        else {
     63                                pfos = new FileOutputStream(pluginDirName + FW_BUNDLE_LOCATION + "/" + eName);
     64                                fwFound = false;
     65                        }
     66                        if(fwFound || fwplugDir.needUpdate(jars,eName)) {
     67                                BufferedOutputStream pos = new BufferedOutputStream(pfos);
     68                                inp = new BufferedInputStream(file.getInputStream( e ));
     69
     70                                while ((len = inp.read(buffer)) > 0) pos.write(buffer, 0, len);
     71                   
     72                                pos.flush();
     73                                pos.close();
     74                                inp.close();
     75                                pfos.close();
     76                        }
     77                }
     78            }
     79                } catch (IOException ex) {
     80                        ex.printStackTrace();
     81                }
     82                                       
     83                RunFW runFW = new RunFW();
     84                runFW.init();
    2685                System.out.println("SmedFW (OSGi-Implementation) noch nicht weiter programmiert");
    2786        }
    28 
    29         private void init() {
    30                 Map config = new HashMap();
    31                 List list = new ArrayList();
    32                
    33                 list.add(this);
    34                 config.put(FelixConstants.SYSTEMBUNDLE_ACTIVATORS_PROP, list);
    35                
    36                 // Now create an instance of the framework with
    37                 // our configurations properties
    38                 felix = new Felix(config);
    39                
    40                 // now start Felix instance
    41                 try {
    42                         felix.start();
    43                 } catch (BundleException e) {
    44                         System.err.println("Could not generate framework: " + e);
    45                         e.printStackTrace();
    46                 }
    47         }
    48 
    49         @Override
    50         public void start(BundleContext context) throws Exception {
    51                 this.context = context;
    52         }
    53 
    54         @Override
    55         public void stop(BundleContext context) throws Exception {
    56                 context = null;
    57         }
    5887       
    59         public Bundle[] getBundles() {
    60                 if(context != null) return context.getBundles();
    61                
    62                 return null;
     88        public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
     89        if (oldFrame == null && newFrame != null) {
     90                System.out.println("josm zeigt Karte");
     91        } else {
     92                System.out.println("josm zeigt keine Karte");
     93        }
    6394        }
    6495
Note: See TracChangeset for help on using the changeset viewer.