| Áö´Ï°¡ GEF¸¦ ¸¸³µÀ»¶§2(Viewer)(2008/10/28) | ![]() |
JLab Çã¿øÁø
¡¡
À̹ø ±â»ç¿¡¼´Â GEF °³¹ß¿¡ ÀÖ¾î¼ GEFÀÇ ¿ä¼ÒµéÀ» ÇÁ·¹ÀÓ¿öÅ© °³¹ßÀÚÀÇ ½ÃÁ¡À¸·Î º¸°í, GEF Ä˹ö½º¿¡ ¸ðµ¨À» ±×¸®´Â ¿¹Á¦¸¦ ÅëÇØ GEFÀÇ Viewer ±âº»¿ä¼Ò¿¡ ´ëÇØ ¾Ë¾Æ º»´Ù.
¡¡
ÇÁ·¹ÀÓ¿öÅ© °³¹ßÀÚÀÇ ½ÃÁ¡À¸·Î º¸¶ó
ÇÁ·¹ÀÓ¿öÅ© »ç¿ë Ãʱâ ÁøÀÔ ¹æ¹ýÀº º¸Åë Æ©Å丮¾ËÀ» ÀÛ¼º ½ÇÇà Çϰí ÇÊ¿äÇÑ ¿ä¼ÒµéÀ» ¹Ù²ã º¸°í Çϴ½ÄÀ¸·Î ´ëºÎºÐ ÁøÇà µÈ´Ù. ÇÊÀÚ°¡ ÀÌÀü¿¡ ½è´ø Ã¥ÀÌ ±×·¯Çß°í ÁøÇàÇß´ø ¼¼¹Ì³ª°¡ ±×·¯Çß°í ´Ù¸¥ºÐµéµµ ºñ½ÁÇß´Ù. ÀÌ ¹æ½ÄÀº Ãʱâ ÁøÀÔ ºñ¿ëÀ» ÁÙÀδٴ ÀÌÁ¡ÀÌ Àִµ¥ Áß°£À¸·Î ³Ñ¾î°¡±â´Â ¿©ÀüÈ÷ ¾î·Æ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. Áï ¼¼¹Ì³ª¸¦ ¿¹·Î µé¸é ÃÊ±Þ ¼¼¹Ì³ª¸¦ ÃÊûÀ» ¹Þ¾Æ ÁøÇàÇÏ¸é ¸î ´Þ ÈÄ ´Ù½Ã °¡¼ Áß±Þ ¼¼¹Ì³ª¸¦ ÇØ¾ßÇÑ´Ù. ¾îÂî º¸¸é ´ç¿¬ÇÑ ¼ø ÀÌÁö¸¸, ÇÊÀÚ°¡ º¼¶§´Â ºñ »ý»êÀûÀ̶ó »ý°¢ÇÑ´Ù. ÀÌ¿¡ ÇÊÀÚ°¡ »ý°¢ÇѰÍÀÌ ÀÏÁ¾ÀÇ ¿ª¹ß»óÀÎ ÇÁ·¹ÀÓ¿öÅ© °³¹ßÀÚÀÇ ½ÃÁ¡À¸·Î Á¢±Ù Çϴ°ÍÀÌ´Ù. ÀÌ·± ¿ª¹ß»óÀÌ ÇÁ·¹ÀÓ¿öÅ©ÀÇ µðÀÜÀÎ¿Í ºí·çÇÁ¸°Æ®¿¡ ²À ¸Â´Â°ÍÀº ¾Æ´ÏÁö¸¸ ÇÁ·¹ÀÓ¿öÅ© ÁøÇà¿¡ ÀÖ¾î ÂѾư¡´Â°ÍÀÌ ¾Æ´Ñ ÇÁ·¹ÀÓ¿öÅ©¸¦ Áö¹èÇÒ ¼ö ÀÖ´Â À§Ä¡¿¡ ¼³ ¼ö ÀÖ´Ù. ÀÌ ±â»ç¿¡¼´Â È¿À²»ó ÇÊÀÚÀÇ ¸Á»óÀ» ¹èÁ¦Çϰí GEF ÄÁ¼Á¿¡ ¸Â´Â ¿ª¹ß»óÀ» ÇßÁö¸¸ ¿©·¯ºÐµéµµ ÀÌ ¹æ¹ýÀ» »ç¿ëÇϱ⸦ ±ÇÇÑ´Ù.
±×·¡ÇÈÄà ¿¡µðÅͶó Çϸé ÇÊÀÚ°¡ ¶°¿À¸£´Â ¾îÇø®ÄÉÀ̼ÇÀº Jasc»çÀÇ ÆäÀÎÆ®¼¥, Microsoft»çÀÇ ÆÄ¿öÆ÷ÀÎÆ® µîÀÌ ÀÖ´Ù. (±¹¿Ü¿Í ±¹³»ÀÇ UMLÅøµµ ¶°¿À¸£´Âµ¥ »óǰ¸í°ú ȸ»ç¸íÀÌ Á¤È®ÇÏ°Ô »ý°¢³ªÁö ¾Ê´Â´Ù.) GEFÀÇ ¿ªÇÒÀº ÆäÀÎÆ® ¼¥À̳ª ÆÄ¿öÆ÷ÀÎÆ® µîÀ» ¸¸µé ¼ö ÀÖ´Â ÀϹݷÐÀ» Á¦°øÇÏ´Â ±×·¢ÇÈÄà ¿¡µðÅÍ ÀϹݷРÁ¦°øÀÚÀÌ´Ù.
PowerPoint
PaintShop
Text Editor°¡ ¾Æ´Ñ Graphical Editor À̹ǷΠGUIÀûÀÎ ¿ä¼Òµµ Áß¿äÇÏ´Ù. ¾Õ¼ ¿°ÅÇÑ ¾îÇø®ÄÉÀ̼ǵéÀ» »ìÆì º¸¸é Á¦°øµÈ ¿ä¼Òµé(¹®ÀÚ, µµÇü µî)À» ƯÁ¤ ¿µ¿ª¿¡ ¹èÄ¡Çϰí ÀÌ ¹èÄ¡ÇÑ ¿ä¼ÒµéÀ» Á¶Àý ÇÒ ¼ö ÀÖ´Â ±â´ÉÀÌ ÀÖ´Ù. Áï ±×·¡ÇÈÄà ¿¡µðÅÍ¿¡´Â ±âº»ÀûÀ¸·Î ÆíÁýÇÒ ¿ä¼ÒµéÀÌ ¿°ÅµÈ ÆÈ·§Æ®¿Í À̸¦ ¹èÄ¡ÇÒ Ä˹ö½º°¡ ÇÊ¿äÇÏ´Ù. GEF´Â ÀÌ ÆÈ·§Æ®¿Í Ä˹ö½º¸¦ ¾î¶²½ÄÀ¸·Îµç Á¦°øÇßÀ» °ÍÀÌ´Ù.
½Ã½ºÅÛ ÀûÀ¸·Î´Â ¹®ÀÚ µµÇüµéÀ» ¹èÄ¡Çϰí À̸¦ Á¶Àý Çϱâ À§Çؼ´Â ¹®ÀÚ, ¸ðÇüµîÀÇ ÆÈ·§Æ® ¿ä¼ÒµéÀÌ ¸Þ¸ð¸®¿¡¼ ±¸ºÐµÇ¾î °ü¸®µÇ¾î¾ß ÇÑ´Ù.
¹®ÀÚ µµÇü µµÇü¶ÇÇÑ ¿¡µðÅÍ »óÀÇ Á¶ÀÛ(µå·¹±× ³ª Űº¸µå ÀԷµî)ÀÌ ³»¿ë¿¡ ¹Ý¿µµÇ¾î¾ß ÇÑ´Ù. ¿©±â ±îÁö Á¤¸® ÇÏ¿© ÀϹÝÈ ÇØº¸ÀÚ.
GUI System ÆÈ·§Æ® + Ä˹ö½º ÆÈ·§Æ® ¿ä¼ÒµéÀÇ ±¸ºÐµÈ ¸Þ¸ð¸® ¿µ¿ª °ü¸®
GUI ÀÇ Á¶ÀÛÀÌ ÆÈ·§Æ® ¿ä¼ÒµéÀÇ ½ÇÁ¦ ³»¿ë¿¡ ¹Ý¿µµÊ
Graphical Editor Overview
GEF Overview
GEF Overview
¾Õ ¼ ¿ì¸®°¡ »ý°¢ÇÑ GEFÀÇ ¿ä¼ÒµéÀº ´ÙÀ½°ú °°Àº ½ÇÁ¦ GEFÀÇ ¿ä¼Òµé°ú ¸ÞÇεǴ °³³äµéÀÌ´Ù.
Model Memory Block View(Draw2D Figure) Cavas Controller Controller Tool PalleteÀϹÝÀûÀÎ ±×·¢ÇÈÄà ¿¡µðÅ͵µ ±×·¸°í GEF ¶ÇÇÑ MVC(Model View Control) ¾ÆÅ°ÅØÆ®·Î µÇ¾î ÀÖ´Ù. ¿©±â¼ ¿°ÅµÈ ¿ä¼Òµé¸¸ 4°¡Áö(Model, View, Controller, Tool)ÀÌ´Ù. ÀÌ ¿ä¼ÒµéÀ» »ý¼º ÃʱâÈ Çϱâ À§Çؼ GEFÀÇ ¿¡µðÅÍ Å¬·¡½º´Â Factory ÆÐÅÏÀ¸·Î µÇ¾î ÀÖ´Ù. GEF¿¡µðÅÍ¿¡ ÀÌ ¿ä¼ÒµéÀ» Çϳª¾¿ ü¿ö ³Ö¾î º¸ÀÚ.
GEF¸¦ ÀÌ¿ë ¸ðµ¨À» ±×·Á º¸ÀÚ
ÀÌÀü ±â»ç¿¡¼ ¿¹Á¦´Â canvas, pallete ¸ðµÎ ¾Æ¹«°Íµµ ¾Èº¸ÀÌ´Â »óÅ¿´´Ù. »ý¼º ÃʱâÈ °úÁ¤ÀÌ ¾ø¾ú±â ¶§¹®ÀÌ´Ù. ÀÏ´Ü Ä˹ö½º¿¡ ¿ì¸®°¡ Á¤ÀÇÇÑ ¸ðµ¨ÀÌ º¸ÀÏ ¼ö ÀÖ°Ô ÇØº¸ÀÚ. GEF Ä˹ö½º¿¡ ¸ðµ¨ÀÌ ±×·ÁÁö´Â °úÁ¤Àº ´ÙÀ½°ú °°´Ù.
1. ºä¾î ÄÁÅÙÆ®ÀÇ ¸ðµ¨À» °¡Á® ¿Â´Ù.
-À̰ÍÀÌ ¸ðµç ¸ðµ¨À» °¡Áö°í ÀÖ´Â ÃÖ»óÀ§ ¸ðµ¨ÀÌ´Ù.
2. ÇØ´ç ¸ðµ¨ÀÇ ¿¡µðÆ® ÆÄÆ®¸¦ ã´Â´Ù.
-°¢ ¸ðµ¨ÀÇ °¢°¢ÀÇ ¿¡µðÆ® ÆÄÆ®¸¦ °¡Áø´Ù. °°Àº ¿¡µðÅÍ ÆÄÆ®¸¦ »ç¿ëÇØµµ µÈ´Ù.
3. ¿¡µðÆ® ÆÄÆ®¸¦ ÂüÁ¶ÇÏ¿© ¸ðµ¨À» ±×¸°´Ù.
-¿¡µðÆ® ÆÄÆ®´Â ¾î¶»°Ô º¸ÀÏÁöÀÇ ViewerÀÇ ¿ªÇÒ°ú ÆíÁýÀÇ Á¦ÇÑ À̶ó´Â ControlÀÇ ¿ä¼Ò¸¦ °¡Áö°í ÀÖ´Ù.
°úÁ¤À» Á¤¸®ÇØ º¸¸é GEF canvas¿¡ ¸ðµ¨À» ±×¸®±â À§Çؼ´Â Model, Edit Part, 2¹øÀÇ ¿ªÇÒÀ» ÇÏ´Â Áß°³ÀÚ°¡ ÇÊ¿äÇÏ´Ù.(GEF¿¡¼´Â ÀÌ Áß°³ÀÚ¸¦ Edit Part Factory¶ó ºÎ¸¥´Ù)
Model
±â»ç¿¡ »ç¿ëÇÒ ¿¹Á¦¸¦ »ìÆì º¸ÀÚ. ¸Å¿ì °£´ÜÇÑ ¸ðµ¨·Î ±âº»ÀÌ µÇ´Â ¸ðµ¨°ú ¸ðµ¨°ú ¸ðµ¨À» ¿¬°áÇÒ ¼ö ÀÖ´Â ¿¬°á ¸ðµ¨, ¸ðµ¨µéÀ» Æ÷ÇÔÇÒ ÃÖ»óÀ§ ¸ðµ¨, ÀÌ·¸°Ô 3°¡Áö·Î ±¸¼º µÇ¾î ÀÖ´Ù.
SimpleDiagram.java
package net.jlab.get.example.editor.model;
import java.util.ArrayList;
import java.util.List;
public class SimpleDiagram {
private List SimpleModelList = new ArrayList();
public boolean addChild(SimpleModel s) {
if (s != null && SimpleModelList.add(s)) {
return true;
}
return false;
}
public List getChildren() {
return SimpleModelList;
}
public boolean removeChild(SimpleModel s) {
if (s != null && SimpleModelList.remove(s)) {
return true;
}
return false;
}
}¸ðµç ¸ðµ¨ µéÀ» Æ÷ÇÔÇϰí ÀÖ´Â ÃÖ»óÀ§ ¸ðµ¨ ÀÌ´Ù.
package net.jlab.get.example.editor.model;
public class SimpleModel {
private int type;
public void setType(int type) {
this.type = type;
}
public int getType() {
return type;
}
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}SimpleModel.java
½ÇÁ¦ ±â»ç¿¡¼ »ç¿ëÇÒ ¸ðµ¨·Î½á ¸ðµ¨ ŸÀÔÀ» ÀúÀåÇÒ type ÇÊµå ³»¿ëÀ» ÀúÀåÇÒ contentÇʵåµîÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ´Ù.
package net.jlab.get.example.editor.model;
public class SimpleConnection extends SimpleModel {
private SimpleModel startPoint;
public SimpleModel getStartPoint() {
return startPoint;
}
public void setStartPoint(SimpleModel startPoint) {
this.startPoint = startPoint;
}
private SimpleModel endPoint;
public SimpleModel getEndPoint() {
return endPoint;
}
public void setEndPoint(SimpleModel endPoint) {
this.endPoint = endPoint;
}
}SimpleConnection.java
¸ðµ¨°ú ¸ðµ¨À» ¿¬°áÇÒ ¿¬°áÀÚ ÀÌ´Ù. ½ÇÁ¦ ¸ðµ¨ ¼³°è¿¡ À־ ¸ðµ¨¾È¿¡ ´Ù¸¥ ¸ðµ¨¿¡ ´ëÇÑ ·¹ÆÛ·±½º ¸®½ºÆ®¸¦ »ðÀÔÇÏ¸é µÇÁö¸¸ ±â»ç ÁøÇà»ó ÀÌ·¸°Ô º°µµÀÇ ¸ðµ¨·Î Á¤ÀÇ Çß´Ù.
Edit Part
¿©·¯ºÐµéÀÌ ½ÇÁ¦ GEF¸¦ »ç¿ëÇÒ¶§ °¡Àå ¸¹Àº Äڵ带 ÀÛ¼ºÇÏ°Ô µÇ´Â ºÎºÐÀÌ´Ù. MVCÁß V¿Í CÀÇ ¿ä¼Ò¸¦ ¸ðµÎ °¡Áö°í Àֱ⠶§¹®ÀÌ´Ù. ÇÏÁö¸¸ ViewerÀÇ ¿ªÇÒÀº GEFÀÇ ±×·¡ÇÈ ¶óÀ̺귯¸®ÀÎ Draw2DÀÇ Figure¿¡ Áß°³ ÇÏ´Â ¿ªÇÒ ¸¸ ÇÔÀ¸·Î MVCÀÇ C ¿ªÇÒÀÎ Controller¿¡ Ä¡ÁߵȴÙ. Controller¿ªÇÒÀº ´ÙÀ½ ±â»ç¿¡¼ ´Ù·ç °Ú´Ù Viewer Áß½ÉÀ¸·Î º¸ÀÚ.
package net.jlab.get.example.editor.edit;
import net.jlab.get.example.editor.model.SimpleModel;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Ellipse;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.PolygonDecoration;
import org.eclipse.draw2d.PolylineConnection;
import org.eclipse.draw2d.RectangleFigure;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
import org.eclipse.gef.editpolicies.ConnectionEditPolicy;
import org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy;
import org.eclipse.gef.requests.GroupRequest;
public class SimpleModelEditPart extends AbstractGraphicalEditPart {
@Override
/*
* (non-Javadoc)
*
* @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
*/
protected IFigure createFigure() {
SimpleModel model = (SimpleModel) this.getModel();
IFigure f = null;
if (model.getType() == 1) {
f = new Ellipse();
f.setOpaque(true); // non-transparent figure
f.setBackgroundColor(ColorConstants.green);
f.setLocation(new Point(100, 100));
f.setSize(100, 100);
}
if (model.getType() == 2) {
f = new RectangleFigure();
f.setOpaque(true); // non-transparent figure
f.setBackgroundColor(ColorConstants.yellow);
f.setLocation(new Point(250, 100));
f.setSize(100, 100);
}
return f;
}
@Override
protected void createEditPolicies() {
// TODO Auto-generated method stub
}
}
SimpleModelEditPart.javaEditPartÀÇ ¿À¹ö¶óÀÌµå ¸Þ¼Òµå´Â Å©°Ô 2°¡Áö ÀÌ´Ù.
protected IFigure createFigure()
¸ðµ¨À» ¾î¶»°Ô º¸¿©ÁÙÁö °áÁ¤ÇÒ ¸Þ¼Òµå ÀÌ´Ù. À§ Äڵ忡¼´Â ÁöÁ¤µÈ ¿µ¿ª¿¡ º¸¿©ÁÖ´Â Äڵ带 »ðÀÔÇß´Ù.
protected void createEditPolicies()ÆíÁý¿¡ Á¦ÇÑÀ» ÁÖ´Â ¸Þ¼Òµå ÀÌ´Ù. Á¦ÇÑ »Ó¸¸ ¾Æ´Ï¶ó ¹æ¹ý ¶ÇÇÑ Á¤ÇØ ÁÖ´Â ¸Þ¼Òµå·Î ÀÌ ¸Þ¼Òµå°¡ ±×³É StubÀ¸·Î ³²¾Æ ÀÖ´Â À§ ¿¹Á¦¿¡¼´Â ¾Æ¹«·± ÆíÁýÀ» ÇÒ ¼ö ¾ø°Ô µÈ´Ù.
package net.jlab.get.example.editor.edit;
import net.jlab.get.example.editor.model.SimpleConnection;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.PolygonDecoration;
import org.eclipse.draw2d.Polyline;
import org.eclipse.draw2d.PolylineConnection;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.editparts.AbstractConnectionEditPart;
import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
import org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy;
public class SimpleConnectionEditPart extends AbstractGraphicalEditPart {
/*
* (non-Javadoc)
*
* @see org.eclipse.gef.editparts.AbstractEditPart#createEditPolicies()
*/
protected void createEditPolicies() {
}
/*
* (non-Javadoc)
*
* @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
*/
protected IFigure createFigure() {
Polyline connection = new Polyline();
connection.setLineWidth(3);
connection.setLineStyle(Graphics.LINE_SOLID); // line drawing style
connection.addPoint(new Point(200, 150));
connection.addPoint(new Point(250, 150));
return connection;
}
private SimpleConnection getCastedModel() {
return (SimpleConnection) getModel();
}
}
SimpleConnectionEditPart.java¸ðµ¨°ú ¸ðµ¨ÀÇ °ü°è¸¦ Ç¥½ÃÇÒ ¿¬°á¼±ÀÇ ¿¡µðÆ® ÆÄÆ® ÀÌ´Ù.
package net.jlab.get.example.editor.edit;
import java.util.List;
import net.jlab.get.example.editor.model.SimpleDiagram;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.FreeformLayer;
import org.eclipse.draw2d.FreeformLayout;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.MarginBorder;
import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
public class SimpleDiagramEditPart extends AbstractGraphicalEditPart {
@Override
protected IFigure createFigure() {
Figure f = new FreeformLayer();
f.setBorder(new MarginBorder(3));
f.setLayoutManager(new FreeformLayout());
return f;
}
@Override
protected void createEditPolicies() {
}
private SimpleDiagram getCastedModel() {
return (SimpleDiagram) getModel();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.AbstractEditPart#getModelChildren()
*/
protected List getModelChildren() {
return getCastedModel().getChildren(); // return a list of shapes
}
}
SimpleDiagramEditPart.java¸ðµ¨À» ±×·ÁÁÙ Ä˹ö½º ¿ªÇÒÀ» ÇÒ SimpleDiagramÀÇ EditPartÀÌ´Ù. ½ÇÁ¦ ¸ðµ¨µéÀº ÀÌ À§¿¡¼ ±×·ÁÁö¹Ç·Î ´Ù¸¥ ¿¡µðÆ® ÆÄÆ®¿Í´Â ´Ù¸£°Ô LayoutÀÌ ÇÊ¿äÇÏ´Ù.
package net.jlab.get.example.editor.edit;
import net.jlab.get.example.editor.model.SimpleConnection;
import net.jlab.get.example.editor.model.SimpleDiagram;
import net.jlab.get.example.editor.model.SimpleModel;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartFactory;
public class SimpleEditPartFactory implements EditPartFactory {
@Override
public EditPart createEditPart(EditPart context, Object model) {
EditPart part = null;
if (model instanceof SimpleDiagram) {
part = new SimpleDiagramEditPart();
}
if (model instanceof SimpleModel) {
part = new SimpleModelEditPart();
}
if (model instanceof SimpleConnection) {
part = new SimpleConnectionEditPart();
}
part.setModel(model);
return part;
}
}
SimpleEditPartFactory.java¾î¶°ÇÑ ¸ðµ¨À» ¾î¶°ÇÑ ¿¡µðÆ® ÆÄÆ®·Î ¿¬°áÇÒÁö Áß°³ÀÚ ¿ªÇÒÀ» ÇÏ´Â EditPartFactoryÀÌ´Ù.
Editor
package net.jlab.get.example.editor;
import net.jlab.get.example.editor.edit.SimpleEditPartFactory;
import net.jlab.get.example.editor.model.SimpleConnection;
import net.jlab.get.example.editor.model.SimpleDiagram;
import net.jlab.get.example.editor.model.SimpleModel;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.commands.CommandStack;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette;
import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
public class SimpleEditor extends GraphicalEditorWithFlyoutPalette {
CommandStack command;
DefaultEditDomain domain;
SimpleDiagram diagram;
public SimpleEditor() {
super();
domain = new DefaultEditDomain(this);
this.setEditDomain(domain);
command = new CommandStack();
this.getEditDomain().setCommandStack(command);
this.createModelMap();
}
/**
* ¸ðµ¨ °´Ã¼¸¦ »ý¼ºÇϰí À̵éÀÇ °ü°è¸¦ ¸¸µç´Ù.
*/
private void createModelMap() {
System.err.println("** createModelMap. **");
diagram = new SimpleDiagram();
SimpleModel model1 = new SimpleModel();
model1.setContent("Model1");
model1.setType(1);
diagram.addChild(model1);
SimpleModel model2 = new SimpleModel();
model2.setContent("Model2");
model2.setType(2);
diagram.addChild(model2);
SimpleConnection connection = new SimpleConnection();
connection.setType(1);
connection.setStartPoint(model1);
connection.setEndPoint(model2);
diagram.addChild(connection);
}
protected void configureGraphicalViewer() {
System.err.println("** configureGraphicalViewer. **");
super.configureGraphicalViewer();
GraphicalViewer viewer = getGraphicalViewer();
viewer.setEditPartFactory(new SimpleEditPartFactory());
viewer.setRootEditPart(new ScalableFreeformRootEditPart());
viewer.setKeyHandler(new GraphicalViewerKeyHandler(viewer));
}
@Override
protected void initializeGraphicalViewer() {
System.err.println("** initializeGraphicalViewer. **");
super.initializeGraphicalViewer();
GraphicalViewer viewer = getGraphicalViewer();
viewer.setContents(diagram);
}
@Override
protected PaletteRoot getPaletteRoot() {
// TODO Auto-generated method stub
return null;
}
@Override
public void doSave(IProgressMonitor monitor) {
// TODO Auto-generated method stub
}
}
SimpleEditor.java
GEF¿¡¼ ¸ðµ¨ °£ÀÇ °ü°è´Â ÀúÀåµÈ ÆÄÀÏÀ» Àаųª ±âÁ¸ÀÇ ¸ðµ¨À» ºÐ¼® ÇÏ¿© »ý¼ºÇÏ°Ô µÈ´Ù. ±â»ç ÁøÇà»ó ¸ðµ¨°£ÀÇ °ü°è¸¦ ÀÓÀÇ·Î ¸¸µé¾ú´Ù. »ý¼ºµÈ ¸ðµ¨À» ÃÖ»óÀÇ ¸ðµ¨¿¡ ³Ö´Â ÄÚµå´Â GEF ÇÁ·¹ÀÓ¿öÅ©»ó ÇÊ¿äÇÑ ÄÚµåÀÌ´Ù. GEF°¡ ¸ðµ¨À» Viewer¿¡ Ãâ·ÂÇϱâ À§Çؼ ¸ðµ¨ÀÇ ºÐ¼®À» ÃÖÃÊ·Î ½ÃÀÛÇÒ Å¸°ÙÀÌ ÇÊ¿äÇѵ¥ À̰ÍÀ» ÄÁÅ×ÀÌ³Ê ¿ªÇÒÀ» ÇÏ´Â ¸ðµ¨ÀÌ ´ã´çÇÏ°Ô µÈ´Ù.
ºä¾î¸¦ ±¸¼ºÇϱâ À§ÇÑ Áغñ ÄÚµåÀÌ´Ù. GEF °³¹ß½Ã °ÅÀÌ ÀÌ ÄÚµå ±×´ë·Î °íÁ¤ÀûÀ¸·Î ¾²°Ô µÈ´Ù. À̰÷¿¡ EditPartFactory¸¦ µî·ÏÇØ¾ß ÇÑ´Ù.
![]()
ºä¾î¸¦ ÃʱâÈ ÇÏ°í ºä¾î¿¡ ºÐ¼®À» ½ÃÀÛÇÒ ÃÖÃÊÀÇ ¸ðµ¨À» ¾Ë·ÁÁØ´Ù.
¿©±â ±îÁö°¡ ¸ðµ¨À» ºä¾î¿¡ º¸À̱â À§ÇÑ ÃÖ¼Ò ÄÚµå ÀüºÎ ÀÌ´Ù.
Simple Graphical Editor
ÀÌ Äڵ带 ½ÇÇàÇÏ¸é ¸ðµ¨À» º¸¿©Áֱ⸸ ÇÒ»Ó, ÆÈ·§Æ®µµ µ¿ÀÛÇÏÁö ¾Ê°í Ä˹ö½º¿¡ ±×·ÁÁø ¸ðµ¨µµ ÆíÁý ÇÒ ¼ö ¾ø´Ù. ÀÌÀ¯´Â ¿©±â ±îÁö ±â»ç¸¦ ÁÖÀÇ ±í°Ô ÀÐ¾î º¸¾Ò´Ù¸é ½±°Ô ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´ÙÀ½ ±â»ç¿¡¼´Â EditPartPolicy¿Í Pallete ±â´ÉÀ» Ãß°¡ÇØ º¸ÀÚ.
| °ü·Ã Á¦ÀÌ·¦ ±â»ç | |
| Áö´Ï°¡ GEF¸¦ ¸¸³µÀ» ¶§ 1 | http://www.jlab.net/news/20051107/news.htm |
| Áö´Ï°¡ GEF¸¦ ¸¸³µÀ» ¶§ 2 | http://www.jlab.net/news/20051206/news.htm |
| Áö´Ï°¡ GEF¸¦ ¸¸³µÀ» ¶§ 1 (Renewer) | http://www.jlab.net/news/20081023/news.htm |
| Á¤º¸ |
| ÀÌ ±â»ç´Â 2005³âµµÀÇ ±â»ç¸¦ ÀçÆíÁý ÇÏ¿© ¿¬ÀçÇÏ´Â ±â»çÀÔ´Ï´Ù. |
| ¿¹Á¦ ÇÁ·ÎÁ§Æ® ´Ù¿î·Îµå |
About Author
Çã¿øÁø
Á¦ÀÌ·¦ ´ëÇ¥ ¿î¿µÀÚ, Total Eclipse ´ëÇ¥ ÀúÀÚ, Eclipse Consultant, Juliet Scandal Project Leader. ÀÌŬ¸³½º ÇÁ·ÎÁ§Æ®µéÀ» Àû±Ø ÀÌ¿ëÇØ¼ Àúºñ¿ëÀ¸·Î Äè¼Ó°³¹ßÀ» Çϴµ¥ °ü½ÉÀÌ ¸¹´Ù. Contact
www.jlab.net
ÀÌ ÄÁÅÙÃ÷´Â JPL¿¡ ÀÇÇØ¼ º¸È£ ¹Þ½À´Ï´Ù. ¿ÀÅ» ÀÚ³ª °ÇÀÇ´Â À̰÷¿¡ ÇØÁֽʽÿÀ