All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.draagon.meta.mojo.MetaDataEditorMojo Maven / Gradle / Ivy

package com.draagon.meta.mojo;

import com.draagon.meta.generator.Generator;
import com.draagon.meta.loader.MetaDataLoader;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.ResolutionScope;

import javax.swing.*;;
import java.awt.*;
import java.util.List;

@Mojo(name="editor",
        requiresDirectInvocation = true,
        //threadSafe = true,
        //instantiationStrategy = InstantiationStrategy.KEEP_ALIVE,
        requiresDependencyResolution= ResolutionScope.RUNTIME_PLUS_SYSTEM,
        defaultPhase = LifecyclePhase.NONE)
public class MetaDataEditorMojo extends AbstractMetaDataMojo
{
     @Override
     protected void executeGenerators(MetaDataLoader loader, List generatorImpls) {

         getLog().info( "Launching MetaData Editor with Loader ["+loader.getName() +"] "+
                 "and ("+generatorImpls.size()+") generators");

         if ( getLog().isDebugEnabled() ) {
             getLog().debug( "Loader:    " + loader );
             for (Generator gen : generatorImpls) {
                 getLog().debug("Generator: " + gen);
             }
         }

         JFrame f = displayEditor( loader );
         try {
             while ( f.isShowing() ) {
                 Thread.currentThread().sleep(1000);
             }

             getLog().info( "MetaData Editor was closed");
         }
         catch (InterruptedException e) {
             getLog().warn( "MetaData Editor was interrupted: " + e.getMessage(), e );
         }
     }

     protected JFrame displayEditor( MetaDataLoader loader ) {

         JFrame f = new JFrame("MetaData Editor - Loader ["+loader.getName()+"]");
         f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

         f.setPreferredSize(new Dimension(400, 300));
         f.pack();
         f.setLocationRelativeTo(null);
         f.setVisible(true);

         return f;
     }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy