package com.ge.med.terra.jami.demo;

import java.awt.*;
import javax.swing.*;
import com.ge.med.idc.*;
import com.ge.med.terra.jami.j3d.*;
import com.ge.med.terra.tap.dm.*;

/**
 * This Simple example shows 2 viewports with a volume rendering and a reformat.
 * @author xjt
 */
public class VerySimple3D extends JPanel {

    public VerySimple3D(String volumePath) {
        // Set a grid layout to put 2 viewports in.
        this.setLayout( new GridLayout(1,2) );
        
        // Create an XjVolume
        DMSession dms = new DMSession(new String[] {"file",volumePath});
        DMObject[] dmo = dms.getRelated("series");
        XjVolume vol = DMVolume.buildVolume("DMObjectVolume",new Object[]{dmo[0]});
        
        // Create 1st viewport and show volume rendering
        T3DViewport vp1 = new T3DViewport();
        vp1.setVolume( vol );
        vp1.setRenderStyle( T3DRenderStyleCapable.VOLUME );
        vp1.setPreferredSize( new Dimension(512,512) );
        this.add( vp1 );
        
        // Create 2nd viewport and show reformat
        T3DViewport vp2 = new T3DViewport();
        
        // Get the volume model from the first viewport and re-display on the 2nd viewport with a reformat.
        XjVolumeModel vm = vp1.getVolumeModel();
        vp2.setVolumeModel( vm );
        vp2.setRenderStyle( T3DRenderStyleCapable.REFORMAT );
        vp2.setPreferredSize( new Dimension(512,512) );
        this.add( vp2 );        
    }
    
    /**
     * Main program.
     */
    public static void main( String[] args ) {
        // Put the panel within a JFrame.
        JFrame jf = new JFrame("Very Simple 3D");
        VerySimple3D vs3d = new VerySimple3D(args[0]);
        jf.setContentPane( vs3d );
        vs3d.setPreferredSize( new Dimension(1024,512) );
        jf.pack();
        jf.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        jf.setVisible( true );
    }

}