From: <de...@us...> - 2008-08-12 19:55:22
|
Revision: 3791 http://fudaa.svn.sourceforge.net/fudaa/?rev=3791&view=rev Author: deniger Date: 2008-08-12 19:55:32 +0000 (Tue, 12 Aug 2008) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetVueCalque.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EditCreator.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetVueCalque.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetVueCalque.java 2008-08-12 19:54:13 UTC (rev 3790) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetVueCalque.java 2008-08-12 19:55:32 UTC (rev 3791) @@ -1,139 +1,124 @@ package org.fudaa.ebli.visuallibrary.calque; -import java.awt.BorderLayout; import java.awt.Dimension; -import java.awt.FlowLayout; import java.awt.Graphics2D; +import java.awt.Point; import java.awt.Rectangle; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.image.BufferedImage; import java.util.Collections; -import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; +import javax.swing.JComponent; import javax.swing.JFrame; -import javax.swing.JLabel; +import javax.swing.SwingUtilities; -import org.fudaa.ebli.calque.BArbreCalque; +import org.fudaa.ctulu.image.CtuluLibImage; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.visuallibrary.EbliScene; import org.fudaa.ebli.visuallibrary.EbliWidget; import org.netbeans.api.visual.action.ActionFactory; -import org.netbeans.api.visual.action.InplaceEditorProvider; +import org.netbeans.api.visual.action.EditProvider; import org.netbeans.api.visual.action.WidgetAction; import org.netbeans.api.visual.widget.Widget; -import sun.swing.BakedArrayList; +public class EbliWidgetVueCalque extends EbliWidget implements EditProvider { -import com.memoire.bu.BuBorderLayout; -import com.memoire.bu.BuButton; -import com.memoire.bu.BuPanel; + ZEbliCalquesPanel calquePanel_; + EditCreator editor_; + JFrame frame_; -public class EbliWidgetVueCalque extends EbliWidget implements - InplaceEditorProvider<BuPanel> { + public EbliWidgetVueCalque(EbliScene scene, ZEbliCalquesPanel vue) { + super(scene); + calquePanel_ = vue; - ZEbliCalquesPanel vue_; + editor_ = EditCreator.INSTANCE; + // FIXME a enlever par la suite + setPreferredSize(new Dimension(200, 200)); + setMinimumSize(new Dimension(200, 200)); + initSize(new Rectangle(0, 0, 200, 200)); + calquePanel_.restaurer(); - public EbliWidgetVueCalque(EbliScene scene, ZEbliCalquesPanel vue) { - super(scene); - vue_ = vue; - setPreferredSize(new Dimension(200, 200)); - setMinimumSize(new Dimension(200, 200)); + // -- creation de l action pour editor --// + WidgetAction editorAction = ActionFactory.createEditAction(this); - // -- creation de l action pour editor --// - WidgetAction editorAction = ActionFactory - .createInplaceEditorAction(this); + // -- ajout de l action au widget correspondant --// + this.getActions().addAction(editorAction); - // -- ajout de l action au widget correspondant --// - this.getActions().addAction(editorAction); + } - } + @Override + protected void paintWidget() { - @Override - protected void paintWidget() { - Rectangle rec = getClientArea(); - Graphics2D g = getGraphics(); - g.translate(rec.x, rec.y); - // GrBoite b = vue_.getVueCalque().getViewBoite(); - // vue_.getVueCalque().changeRepere(this, b); - // TODO a ameliorer - BCalque[] tousCalques = vue_.getVueCalque().getCalque() - .getTousCalques(); - vue_.getVueCalque().setSize(rec.width, rec.height); - vue_.getVueCalque().getCalque().setSize(rec.width, rec.height); - for (int i = 0; i < tousCalques.length; i++) { - tousCalques[i].setSize(rec.width, rec.height); - } - vue_.restaurer(); - vue_.getVueCalque().paintImage(g, Collections.EMPTY_MAP); - g.translate(-rec.x, -rec.y); - } + Rectangle rec = getClientArea(); + Graphics2D g = getGraphics(); + g.translate(rec.x, rec.y); + // mode edition + if (frame_ != null) { + Map params = new HashMap(); + CtuluLibImage.setCompatibleImageAsked(params); + // a ameliorer: il ne faudrait pas recreer l'image a chaque fois + BufferedImage image = calquePanel_.produceImage(rec.width, rec.height, params); + g.drawImage(image, 0, 0, rec.width, rec.height, null); + return; - // -- methodes implements InplaceEditorProvider --// + } + // GrBoite b = vue_.getVueCalque().getViewBoite(); + // vue_.getVueCalque().changeRepere(this, b); + // TODO a ameliorer + initSize(rec); - /** - * Methode appeleee pour creer un editor correspondant - */ - public BuPanel createEditorComponent( - org.netbeans.api.visual.action.InplaceEditorProvider.EditorController controller, - Widget widget) { - // TODO Auto-generated method stub + calquePanel_.getVueCalque().paintImage(g, Collections.EMPTY_MAP); + g.translate(-rec.x, -rec.y); + } - final BuPanel panelTest = new BuPanel(new FlowLayout(FlowLayout.CENTER)); - panelTest.add(new JLabel("test panel")); - BuButton boutonTest = new BuButton("bouton cool"); - boutonTest.addActionListener(new ActionListener() { + private void initSize(Rectangle rec) { + BCalque[] tousCalques = calquePanel_.getVueCalque().getCalque().getTousCalques(); + calquePanel_.getVueCalque().setSize(rec.width, rec.height); + calquePanel_.setSize(rec.width, rec.height); + calquePanel_.setPreferredSize(new Dimension(rec.width, rec.height)); + calquePanel_.getVueCalque().getCalque().setSize(rec.width, rec.height); + for (int i = 0; i < tousCalques.length; i++) { + tousCalques[i].setSize(rec.width, rec.height); + } + } - public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub - panelTest.add(new JLabel("bouton appuy\xE9")); - panelTest.validate(); - JFrame frameTruc = new JFrame(); - frameTruc.getContentPane().add(new JLabel("bouton appuy\xE9")); - frameTruc.setSize(200, 200); - frameTruc.setVisible(true); - } + /* + * (non-Javadoc) + * + * @see + * org.netbeans.api.visual.action.EditProvider#edit(org.netbeans.api.visual + * .widget.Widget) + */ + public void edit(Widget _widget) { + if (frame_ != null) + frame_.toFront(); + else { + Rectangle rec = convertLocalToScene(getClientArea()); + Point p = new Point(rec.x, rec.y); + JComponent jc = getEbliScene().getView(); + SwingUtilities.convertPointToScreen(p, jc); - }); - panelTest.add(boutonTest); - BuPanel res = new BuPanel(new BuBorderLayout()); - res.add(vue_); - res - .add(new BArbreCalque(vue_.getArbreCalqueModel()), - BorderLayout.EAST); - // panelTest.add(vue_); + frame_ = editor_.createFrame(calquePanel_); + frame_.setLocation(p); + frame_.pack(); + frame_.setVisible(true); + frame_.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + frame_.addWindowListener(new WindowAdapter() { - return /* panelTest */res; - } + @Override + public void windowClosed(WindowEvent _e) { + if (frame_ != null) + frame_.dispose(); + frame_ = null; + } - public EnumSet<org.netbeans.api.visual.action.InplaceEditorProvider.ExpansionDirection> getExpansionDirections( - org.netbeans.api.visual.action.InplaceEditorProvider.EditorController controller, - Widget widget, BuPanel editor) { - // TODO Auto-generated method stub - return null; - } + }); + } + // TODO Auto-generated method stub - public Rectangle getInitialEditorComponentBounds( - org.netbeans.api.visual.action.InplaceEditorProvider.EditorController controller, - Widget widget, BuPanel editor, Rectangle viewBounds) { - return new Rectangle(viewBounds.x, viewBounds.y, viewBounds.width + 200, - viewBounds.height); - // TODO Auto-generated method stub - //return null; - } - - public void notifyClosing( - org.netbeans.api.visual.action.InplaceEditorProvider.EditorController controller, - Widget widget, BuPanel editor, boolean commit) { - // TODO Auto-generated method stub - - } - - public void notifyOpened( - org.netbeans.api.visual.action.InplaceEditorProvider.EditorController controller, - Widget widget, BuPanel editor) { - // TODO Auto-generated method stub - - } - + } } Added: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EditCreator.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EditCreator.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EditCreator.java 2008-08-12 19:55:32 UTC (rev 3791) @@ -0,0 +1,117 @@ +package org.fudaa.ebli.visuallibrary.calque; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.util.Iterator; +import java.util.List; + +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JToolBar; +import javax.swing.border.LineBorder; + +import org.flexdock.docking.DockingConstants; +import org.flexdock.docking.DockingManager; +import org.flexdock.docking.DockingPort; +import org.flexdock.docking.defaults.DefaultDockingPort; +import org.flexdock.view.View; +import org.fudaa.ebli.calque.BArbreCalque; +import org.fudaa.ebli.calque.ZEbliCalquesPanel; +import org.fudaa.ebli.commun.EbliActionInterface; +import org.fudaa.ebli.commun.EbliComponentFactory; + +/** + * A ameliorer... + * + * @author deniger + * + */ +public final class EditCreator { + + private EditCreator() { + + } + + public static final EditCreator INSTANCE = new EditCreator(); + + JFrame createFrame(ZEbliCalquesPanel pn) { + JFrame frame = new JFrame("Flexdock Test App"); + + frame.getContentPane().setLayout(new BorderLayout()); + JMenu[] specificMenus = pn.getSpecificMenus("test"); + JMenuBar mb = new JMenuBar(); + frame.setJMenuBar(mb); + for (int i = 0; i < specificMenus.length; i++) { + mb.add(specificMenus[i]); + } + JToolBar tb = new JToolBar(); + List actions = pn.getController().getActions(); + for (Iterator iterator = actions.iterator(); iterator.hasNext();) { + EbliActionInterface object = (EbliActionInterface) iterator.next(); + if (object == null) { + tb.addSeparator(); + } else { + tb.add(object.buildToolButton(EbliComponentFactory.INSTANCE)); + } + } + frame.getContentPane().add(tb, BorderLayout.NORTH); + pn.setPreferredSize(pn.getPreferredSize()); + final DefaultDockingPort globalPort = createDockingPort(); + JComponent centerComponent = createView(pn, "VUE 2D"); + DockingManager.dock(centerComponent, (DockingPort) globalPort); + JComponent rightComponent = createView(new JScrollPane(new BArbreCalque(pn.getArbreCalqueModel())), "arbre", true); + DockingManager.dock(rightComponent, centerComponent, DockingConstants.EAST_REGION, 0.75f); + + frame.getContentPane().add(globalPort, BorderLayout.CENTER); + frame.addWindowListener(new WindowAdapter() { + + @Override + public void windowClosed(WindowEvent _e) { + globalPort.clear(); + } + + }); + return frame; + + } + + private static DefaultDockingPort createDockingPort() { + DefaultDockingPort port = new DefaultDockingPort(); + port.setPreferredSize(new Dimension(400, 400)); + return port; + } + + private static JComponent createDockableComponent(String name) { + JPanel panel = new JPanel(new BorderLayout()); + panel.setBorder(new LineBorder(Color.BLUE)); + panel.add(new JLabel("COUCOU " + name)); + return createView(panel, name, true); + } + + private static JComponent createView(JComponent jc, String name) { + return createView(jc, name, false); + } + + private static JComponent createView(JComponent jc, String name, boolean dockage) { + View view = new View(name); + view.getViewProperties().setDockingEnabled(false); + if (dockage) { + view.addAction(DockingConstants.CLOSE_ACTION); + view.getViewProperties().setDockingEnabled(true); + } + view.setContentPane(jc); + view.setTitle(name, true); + // DockingManager.registerDockable(view.getComponent(), name); + + return view; + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |