[Jiemamy-notify:1452] commit [2681] AbstractTableEditorを整備。

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2009年 2月 17日 (火) 22:48:44 JST


Revision: 2681
          http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=2681
Author:   daisuke_m
Date:     2009-02-17 22:48:44 +0900 (Tue, 17 Feb 2009)

Log Message:
-----------
AbstractTableEditorを整備。

Modified Paths:
--------------
    vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/dialog/root/RootEditDialogDomainTab.java

Added Paths:
-----------
    vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/AbstractTableEditor.java
    vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/TableEditorConfigurator.java

Removed Paths:
-------------
    vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/AbstractTableViewerEditArea.java


-------------- next part --------------
Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/dialog/root/RootEditDialogDomainTab.java
===================================================================
--- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/dialog/root/RootEditDialogDomainTab.java	2009-02-17 10:24:44 UTC (rev 2680)
+++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/dialog/root/RootEditDialogDomainTab.java	2009-02-17 13:48:44 UTC (rev 2681)
@@ -16,8 +16,6 @@
 import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.events.KeyAdapter;
 import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.MenuAdapter;
-import org.eclipse.swt.events.MenuEvent;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Image;
@@ -27,10 +25,7 @@
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
 import org.eclipse.swt.widgets.TabFolder;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
@@ -48,7 +43,8 @@
 import org.jiemamy.eclipse.editor.DisplayPlace;
 import org.jiemamy.eclipse.editor.DisplayTarget;
 import org.jiemamy.eclipse.editor.utils.LabelStringUtil;
-import org.jiemamy.eclipse.ui.AbstractTableViewerEditArea;
+import org.jiemamy.eclipse.ui.AbstractTableEditor;
+import org.jiemamy.eclipse.ui.TableEditorConfigurator;
 import org.jiemamy.eclipse.ui.helper.TextSelectionAdapter;
 import org.jiemamy.eclipse.ui.tab.AbstractTab;
 import org.jiemamy.editcommand.Command;
@@ -79,7 +75,7 @@
 	
 	private final RootModel rootModel;
 	
-	private AbstractTableViewerEditArea domainEditArea;
+	private AbstractTableEditor domainEditArea;
 	
 	private Text txtDomainName;
 	
@@ -95,33 +91,28 @@
 	
 
 	/**
-	 * コンストラクタ。
+	 * インスタンスを生成する。
 	 * 
-	 * @param parentTabFolder 
-	 * @param style 
+	 * @param parentTabFolder
+	 * @param style
 	 * @param rootModel
 	 */
 	public RootEditDialogDomainTab(TabFolder parentTabFolder, int style, RootModel rootModel) {
 		super(parentTabFolder, style, Messages.Tab_Domains);
+		
 		this.rootModel = rootModel;
+		
 		Composite composite = new Composite(parentTabFolder, SWT.NULL);
 		composite.setLayout(new GridLayout(1, false));
 		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
 		
+		domainEditArea = new DomainTableEditor(composite, SWT.NULL, rootModel);
+		domainEditArea.configure();
+		domainEditArea.disableEditControls();
+		
 		getTabItem().setControl(composite);
-		
-		createDomainTab(composite);
-		domainEditArea.disableEditControls();
 	}
 	
-	private void createDomainTab(Composite parent) {
-		domainEditArea = new DomainEditTableArea(rootModel);
-		domainEditArea.setAddLabel(Messages.Label_Add);
-		domainEditArea.setInsertLabel(Messages.Label_Insert);
-		domainEditArea.setRemoveLabel(Messages.Label_Remove);
-		domainEditArea.createControlArea(parent);
-	}
-	
 
 	/**
 	 * Domain用ContentProvider
@@ -187,27 +178,103 @@
 		
 	}
 	
-	private class DomainEditTableArea extends AbstractTableViewerEditArea {
+	/**
+	 * Domain用LabelProvider
+	 * 
+	 * @author daisuke
+	 */
+	private class DomainLabelProvider implements ITableLabelProvider {
 		
-		@Deprecated
-		private RootModel rootModel;
+		public void addListener(ILabelProviderListener listener) {
+			// nothing to do
+		}
 		
-		private Jiemamy jiemamy;
+		public void dispose() {
+			// nothing to do
+		}
 		
-		private List<DomainModel> domains;
+		public Image getColumnImage(Object element, int columnIndex) {
+			ImageRegistry ir = JiemamyPlugin.getDefault().getImageRegistry();
+			DomainModel domain = (DomainModel) element;
+			
+			if (columnIndex == 3) {
+				boolean notNull = DomainUtil.hasConstraint(domain, NotNullConstraintModel.class);
+				return ir.get(notNull ? Images.CHECK_ON : Images.CHECK_OFF);
+			}
+			return null;
+		}
 		
-		private Table table;
+		public String getColumnText(Object element, int columnIndex) {
+			DomainModel domain = (DomainModel) element;
+			switch (columnIndex) {
+				case 0:
+					return LabelStringUtil.getString(rootModel, domain, DisplayTarget.NAME, DisplayPlace.FIGURE);
+				case 1:
+					return LabelStringUtil.getString(rootModel, domain, DisplayTarget.TYPE, DisplayPlace.FIGURE);
+					
+				default:
+					return "";
+			}
+		}
 		
+		public boolean isLabelProperty(Object element, String property) {
+			return false;
+		}
+		
+		public void removeListener(ILabelProviderListener listener) {
+			// nothing to do
+		}
+	}
+	
+	private class DomainTableEditor extends AbstractTableEditor {
+		
+		private final Jiemamy jiemamy;
+		
+		private Dialect dialect;
+		
+		private final List<DomainModel> domains;
+		
 
 		/**
-		 * コンストラクタ。
+		 * インスタンスを生成する。
 		 * 
+		 * @param parent
+		 * @param style
 		 * @param rootModel
 		 */
-		public DomainEditTableArea(RootModel rootModel) {
-			this.rootModel = rootModel;
+		public DomainTableEditor(Composite parent, int style, final RootModel rootModel) {
+			super(parent, style, new TableEditorConfigurator() {
+				
+				public String getAddLabel() {
+					return Messages.Label_Add;
+				}
+				
+				public String getEditorTitle() {
+					return Messages.Label_GroupTitle_Domain;
+				}
+				
+				public String getInsertLabel() {
+					return Messages.Label_Insert;
+				}
+				
+				public String getRemoveLabel() {
+					return Messages.Label_Remove;
+				}
+			});
+			
 			jiemamy = rootModel.getJiemamy();
 			domains = rootModel.getDomains();
+			
+			try {
+				dialect = RootModelUtil.getDialect(rootModel.getJiemamy().getFactory().getRootModel());
+			} catch (ClassNotFoundException e) {
+				// THINK どうにか。。。w
+				dialect = JiemamyPlugin.getDialectResolver().getAllInstance().get(0);
+			}
+			
+			assert jiemamy != null;
+			assert domains != null;
+			assert dialect != null;
 		}
 		
 		@Override
@@ -223,7 +290,7 @@
 			domains.add(domainModel);
 			
 			int addedIndex = domains.indexOf(domainModel);
-			table.setSelection(addedIndex);
+			getTableViewer().getTable().setSelection(addedIndex);
 			enableEditControls(addedIndex);
 			txtDomainName.setFocus();
 			
@@ -231,7 +298,13 @@
 		}
 		
 		@Override
-		protected void configureDetailEditControls() {
+		protected void configureEditorControls() {
+			super.configureEditorControls();
+			
+			for (AvailableTypeInfo typeInfo : dialect.getAllDataTypes()) {
+				cmbColumnType.add(typeInfo.getTypeName());
+			}
+			
 			txtDomainName.addFocusListener(new TextSelectionAdapter(txtDomainName));
 			txtDomainName.addKeyListener(new KeyAdapter() {
 				
@@ -284,9 +357,8 @@
 		}
 		
 		@Override
-		protected void configureTable() {
-			super.configureTable();
-			table = getTableViewer().getTable();
+		protected void configureTable(final Table table) {
+			super.configureTable(table);
 			
 			table.addSelectionListener(new SelectionAdapter() {
 				
@@ -301,36 +373,36 @@
 				}
 			});
 			
-			final Menu menu = new Menu(table);
-			table.setMenu(menu);
-			menu.addMenuListener(new MenuAdapter() {
-				
-				@Override
-				public void menuShown(MenuEvent evt) {
-					for (MenuItem item : menu.getItems()) {
-						item.dispose();
-					}
-					int index = table.getSelectionIndex();
-					if (index == -1) {
-						return;
-					}
-					
-					MenuItem removeItem = new MenuItem(menu, SWT.PUSH);
-					removeItem.setText("&Remove"); // TODO 外部化せよ。
-					removeItem.addSelectionListener(new SelectionAdapter() {
-						
-						@Override
-						public void widgetSelected(SelectionEvent evt) {
-							removeTableSelectionItem();
-						}
-					});
-				}
-			});
+			// THINK ↓要る?
+//			final Menu menu = new Menu(table);
+//			table.setMenu(menu);
+//			menu.addMenuListener(new MenuAdapter() {
+//				
+//				@Override
+//				public void menuShown(MenuEvent evt) {
+//					for (MenuItem item : menu.getItems()) {
+//						item.dispose();
+//					}
+//					int index = table.getSelectionIndex();
+//					if (index == -1) {
+//						return;
+//					}
+//					
+//					MenuItem removeItem = new MenuItem(menu, SWT.PUSH);
+//					removeItem.setText("&Remove"); // TODO 外部化せよ。
+//					removeItem.addSelectionListener(new SelectionAdapter() {
+//						
+//						@Override
+//						public void widgetSelected(SelectionEvent evt) {
+//							removeTableSelectionItem();
+//						}
+//					});
+//				}
+//			});
 		}
 		
 		@Override
-		protected void configureTableViewer() {
-			TableViewer tableViewer = getTableViewer();
+		protected void configureTableViewer(TableViewer tableViewer) {
 			tableViewer.setLabelProvider(new DomainLabelProvider());
 			final DomainContentProvider domainContentProvider = new DomainContentProvider();
 			tableViewer.setContentProvider(domainContentProvider);
@@ -350,16 +422,11 @@
 		}
 		
 		@Override
-		protected Composite createEditDetailControls(Composite parent) {
+		protected void createEditorControls(Composite parent) {
 			GridData gd;
 			Label label;
 			
-			Group group = new Group(parent, SWT.NULL);
-			group.setText(Messages.Label_GroupTitle_Domain);
-			group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			group.setLayout(new GridLayout(1, false));
-			
-			Composite cmpNames = new Composite(group, SWT.NULL);
+			Composite cmpNames = new Composite(parent, SWT.NULL);
 			cmpNames.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 			GridLayout layout = new GridLayout(2, false);
 			layout.marginHeight = 0;
@@ -372,7 +439,7 @@
 			txtDomainName = new Text(cmpNames, SWT.BORDER);
 			txtDomainName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 			
-			Composite cmpTypes = new Composite(group, SWT.NULL);
+			Composite cmpTypes = new Composite(parent, SWT.NULL);
 			cmpTypes.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 			layout = new GridLayout(6, false);
 			layout.marginHeight = 0;
@@ -385,17 +452,6 @@
 			cmbColumnType = new Combo(cmpTypes, SWT.READ_ONLY);
 			cmbColumnType.setVisibleItemCount(20);
 			
-			Dialect dialect;
-			try {
-				dialect = RootModelUtil.getDialect(rootModel);
-			} catch (ClassNotFoundException e) {
-				// THINK どうにか。。。w
-				dialect = JiemamyPlugin.getDialectResolver().getAllInstance().get(0);
-			}
-			for (AvailableTypeInfo typeInfo : dialect.getAllDataTypes()) {
-				cmbColumnType.add(typeInfo.getTypeName());
-			}
-			
 			label = new Label(cmpTypes, SWT.NULL);
 			label.setText(Messages.Label_Domain_DataTypeSize);
 			
@@ -411,7 +467,7 @@
 			txtCheck = new Text(cmpTypes, SWT.BORDER);
 			txtCheck.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 			
-			Composite cmpDesc = new Composite(group, SWT.NULL);
+			Composite cmpDesc = new Composite(parent, SWT.NULL);
 			cmpDesc.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 			layout = new GridLayout(2, false);
 			layout.marginHeight = 0;
@@ -422,7 +478,7 @@
 			txtDescription = new Text(cmpDesc, SWT.MULTI | SWT.BORDER);
 			txtDescription.setLayoutData(new GridData(GridData.FILL_BOTH));
 			
-			Composite cmpChecks = new Composite(group, SWT.NULL);
+			Composite cmpChecks = new Composite(parent, SWT.NULL);
 			RowLayout rowLayout = new RowLayout();
 			layout.marginHeight = 0;
 			layout.marginWidth = 0;
@@ -431,12 +487,10 @@
 			
 			chkIsNotNull = new Button(cmpChecks, SWT.CHECK);
 			chkIsNotNull.setText(Messages.Label_Domain_NotNullConstraint);
-			
-			return group;
 		}
 		
 		@Override
-		protected void createTableColumns() {
+		protected void createTableColumns(Table table) {
 			TableColumn colName = new TableColumn(table, SWT.LEFT);
 			colName.setText(Messages.Column_Domain_Name);
 			colName.setWidth(100);
@@ -502,20 +556,21 @@
 		
 		@Override
 		protected JiemamyElement insertTableSelectionItem() {
+			Table table = getTableViewer().getTable();
 			int index = table.getSelectionIndex();
 			
-			JiemamyFactory factory = rootModel.getJiemamy().getFactory();
+			JiemamyFactory factory = jiemamy.getFactory();
 			DomainModel domainModel = factory.newModel(DomainModel.class);
 			
-			domainModel.setName("DOMAIN_" + (rootModel.getDomains().size() + 1));
+			domainModel.setName("DOMAIN_" + (domains.size() + 1));
 			
 			if (index < 0 || index > table.getItemCount()) {
-				rootModel.getDomains().add(domainModel);
+				domains.add(domainModel);
 			} else {
-				rootModel.getDomains().add(index, domainModel);
+				domains.add(index, domainModel);
 			}
 			
-			int addedIndex = rootModel.getDomains().indexOf(domainModel);
+			int addedIndex = domains.indexOf(domainModel);
 			table.setSelection(addedIndex);
 			enableEditControls(addedIndex);
 			txtDomainName.setFocus();
@@ -525,12 +580,13 @@
 		
 		@Override
 		protected void moveDownTableSelectionItem() {
+			Table table = getTableViewer().getTable();
 			int index = table.getSelectionIndex();
 			if (index < 0 || index >= table.getItemCount()) {
 				return;
 			}
 			
-			ListUtils.moveUp(rootModel.getDomains(), index);
+			ListUtils.moveUp(domains, index);
 			
 			table.setSelection(index + 1);
 			enableEditControls(index + 1);
@@ -538,12 +594,13 @@
 		
 		@Override
 		protected void moveUpTableSelectionItem() {
+			Table table = getTableViewer().getTable();
 			int index = table.getSelectionIndex();
 			if (index <= 0 || index > table.getItemCount()) {
 				return;
 			}
 			
-			ListUtils.moveUp(rootModel.getDomains(), index);
+			ListUtils.moveUp(domains, index);
 			
 			table.setSelection(index - 1);
 			enableEditControls(index - 1);
@@ -551,11 +608,12 @@
 		
 		@Override
 		protected JiemamyElement removeTableSelectionItem() {
+			Table table = getTableViewer().getTable();
 			int index = table.getSelectionIndex();
 			if (index < 0 || index > table.getItemCount()) {
 				return null;
 			}
-			DomainModel domainToRemove = rootModel.getDomains().remove(table.getSelectionIndex());
+			DomainModel domainToRemove = domains.remove(table.getSelectionIndex());
 			TableViewer tableViewer = getTableViewer();
 			tableViewer.remove(domainToRemove);
 			
@@ -569,7 +627,7 @@
 			int selectionInedx = cmbColumnType.getSelectionIndex();
 			
 			if (domainEditIndex != -1 && selectionInedx != -1) {
-				DomainModel domain = rootModel.getDomains().get(domainEditIndex);
+				DomainModel domain = domains.get(domainEditIndex);
 				domain.setName(txtDomainName.getText());
 				
 //				Dialect dialect = RootModelUtil.getDialect(rootModel);
@@ -599,52 +657,4 @@
 			}
 		}
 	}
-	
-	/**
-	 * Domain用LabelProvider
-	 * 
-	 * @author daisuke
-	 */
-	private class DomainLabelProvider implements ITableLabelProvider {
-		
-		public void addListener(ILabelProviderListener listener) {
-			// nothing to do
-		}
-		
-		public void dispose() {
-			// nothing to do
-		}
-		
-		public Image getColumnImage(Object element, int columnIndex) {
-			ImageRegistry ir = JiemamyPlugin.getDefault().getImageRegistry();
-			DomainModel domain = (DomainModel) element;
-			
-			if (columnIndex == 3) {
-				boolean notNull = DomainUtil.hasConstraint(domain, NotNullConstraintModel.class);
-				return ir.get(notNull ? Images.CHECK_ON : Images.CHECK_OFF);
-			}
-			return null;
-		}
-		
-		public String getColumnText(Object element, int columnIndex) {
-			DomainModel domain = (DomainModel) element;
-			switch (columnIndex) {
-				case 0:
-					return LabelStringUtil.getString(rootModel, domain, DisplayTarget.NAME, DisplayPlace.FIGURE);
-				case 1:
-					return LabelStringUtil.getString(rootModel, domain, DisplayTarget.TYPE, DisplayPlace.FIGURE);
-					
-				default:
-					return "";
-			}
-		}
-		
-		public boolean isLabelProperty(Object element, String property) {
-			return false;
-		}
-		
-		public void removeListener(ILabelProviderListener listener) {
-			// nothing to do
-		}
-	}
 }

Copied: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/AbstractTableEditor.java (from rev 2680, vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/AbstractTableViewerEditArea.java)
===================================================================
--- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/AbstractTableEditor.java	                        (rev 0)
+++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/AbstractTableEditor.java	2009-02-17 13:48:44 UTC (rev 2681)
@@ -0,0 +1,371 @@
+package org.jiemamy.eclipse.ui;
+
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+
+/**
+ * テーブルを用いたエディタコンポーネントクラス。
+ * 
+ * <p>図のように、表・ボタン・編集コントロールからなるコンポーネント</p>
+ * 
+ * <p>This component looks like this:<br/>
+ * <img src="http://img.f.hatena.ne.jp/images/fotolife/d/daisuke-m/20090217/20090217224121.png">
+ * </p>
+ * 
+ * @author daisuke
+ */
+public abstract class AbstractTableEditor extends Composite {
+	
+	private final TableViewer tableViewer;
+	
+	/** 追加ボタン */
+	private Button btnAdd;
+	
+	/** 挿入ボタン */
+	private Button btnInsert;
+	
+	/** 削除ボタン */
+	private Button btnRemove;
+	
+	/** 上ボタン */
+	private Button btnMoveUp;
+	
+	/** 下ボタン */
+	private Button btnMoveDown;
+	
+
+	/**
+	 * インスタンスを生成する。
+	 * 
+	 * @param parent
+	 * @param style
+	 * @param configurator 
+	 */
+	public AbstractTableEditor(Composite parent, int style, TableEditorConfigurator configurator) {
+		super(parent, style);
+		
+		// 親エリア
+		setLayout(new GridLayout(1, false));
+		setLayoutData(new GridData(GridData.FILL_BOTH));
+		
+		// 子エリア1 - テーブル
+		tableViewer = new TableViewer(this, SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
+		
+		// 子エリア2 - ボタン
+		Composite cmpButtons = new Composite(this, SWT.NULL);
+		cmpButtons.setLayout(new RowLayout());
+		cmpButtons.setLayoutData(new GridData());
+		
+		if (configurator.getAddLabel() != null) {
+			btnAdd = new Button(cmpButtons, SWT.PUSH);
+			btnAdd.setText(configurator.getAddLabel());
+		}
+		if (configurator.getInsertLabel() != null) {
+			btnInsert = new Button(cmpButtons, SWT.PUSH);
+			btnInsert.setText(configurator.getInsertLabel());
+		}
+		if (configurator.getRemoveLabel() != null) {
+			btnRemove = new Button(cmpButtons, SWT.PUSH);
+			btnRemove.setText(configurator.getRemoveLabel());
+		}
+		
+		// hookメソッドのコール
+		createOptionalEditButtons(cmpButtons);
+		
+		btnMoveUp = new Button(cmpButtons, SWT.ARROW | SWT.UP);
+		btnMoveDown = new Button(cmpButtons, SWT.ARROW | SWT.DOWN);
+		
+		// 子エリア3 - 詳細エディタ
+		Group grpEditor = new Group(this, SWT.NULL);
+		grpEditor.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		grpEditor.setLayout(new GridLayout(1, false));
+		grpEditor.setText(configurator.getEditorTitle());
+		
+		createEditorControls(grpEditor);
+		
+		assert tableViewer != null;
+	}
+	
+	/**
+	 * TODO for daisuke
+	 */
+	public void configure() {
+		// 各種hookメソッドのcall
+		configureTable(tableViewer.getTable());
+		configureTableViewer(tableViewer);
+		createTableColumns(tableViewer.getTable());
+		configureCellEditor();
+		configureEditButtons();
+		configureEditorControls();
+		
+		refreshTable();
+	}
+	
+	/**
+	 * 編集コントロールを無効にする。
+	 */
+	public void disableEditControls() {
+		disableEditButtons();
+		disableEditDetailControls();
+	}
+	
+	/**
+	 * 編集コントロールを有効にする。
+	 * 
+	 * @param index 選択されたindex
+	 */
+	public void enableEditControls(int index) {
+		enableEditButtons(index);
+		enableEditDetailControls(index);
+	}
+	
+	/**
+	 * tableViewerを取得する。
+	 * 
+	 * @return tableViewer
+	 */
+	public final TableViewer getTableViewer() {
+		return tableViewer;
+	}
+	
+	/**
+	 * Tableをリフレッシュする。
+	 */
+	public final void refreshTable() {
+		tableViewer.refresh();
+	}
+	
+	/**
+	 * カラムをリフレッシュする。
+	 */
+	public void refreshTableColumns() {
+		removeTableColumns(tableViewer.getTable());
+		createTableColumns(tableViewer.getTable());
+		refreshTable();
+	}
+	
+	/**
+	 * 追加ボタンが押された時の処理を行う。
+	 * 
+	 * @return 追加されたモデル
+	 */
+	protected abstract Object addItem();
+	
+	/**
+	 * CellEditorの設定を行う。
+	 */
+	protected void configureCellEditor() {
+		// nothing to do
+	}
+	
+	/**
+	 * 編集ボタンの設定を行う。
+	 */
+	protected void configureEditButtons() {
+		if (btnAdd != null) {
+			btnAdd.addSelectionListener(new SelectionAdapter() {
+				
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					addItem();
+				}
+			});
+		}
+		
+		if (btnInsert != null) {
+			btnInsert.addSelectionListener(new SelectionAdapter() {
+				
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					insertTableSelectionItem();
+				}
+			});
+		}
+		
+		if (btnRemove != null) {
+			btnRemove.addSelectionListener(new SelectionAdapter() {
+				
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					removeTableSelectionItem();
+				}
+			});
+		}
+		
+		if (btnMoveUp != null) {
+			btnMoveUp.addSelectionListener(new SelectionAdapter() {
+				
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					moveUpTableSelectionItem();
+				}
+			});
+		}
+		
+		if (btnMoveDown != null) {
+			btnMoveDown.addSelectionListener(new SelectionAdapter() {
+				
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					moveDownTableSelectionItem();
+				}
+			});
+		}
+	}
+	
+	/**
+	 * 詳細編集コントロールの設定を行う。
+	 */
+	protected void configureEditorControls() {
+		// nothing to do
+	}
+	
+	/**
+	 * Tableの設定を行う。
+	 * @param table 
+	 */
+	protected void configureTable(final Table table) {
+		table.setLayoutData(new GridData(GridData.FILL_BOTH));
+		table.setHeaderVisible(true);
+		table.setLinesVisible(true);
+		table.addSelectionListener(new SelectionAdapter() {
+			
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				int index = table.getSelectionIndex();
+				if (index >= 0) {
+					enableEditControls(index);
+				} else {
+					disableEditControls();
+				}
+			}
+		});
+	}
+	
+	/**
+	 * TableViewerの設定を行う。
+	 * @param tableViewer 
+	 */
+	protected abstract void configureTableViewer(TableViewer tableViewer);
+	
+	/**
+	 * 詳細編集コントロールを生成する。
+	 * 
+	 * @param parent 親
+	 */
+	protected abstract void createEditorControls(Composite parent);
+	
+	/**
+	 * 編集ボタン領域にオプションのコントロールを生成する。 デフォルトでは何も行わない。
+	 * 
+	 * @param cmpButtons 
+	 */
+	protected void createOptionalEditButtons(Composite cmpButtons) {
+		// noting to do
+	}
+	
+	/**
+	 * TableのColumnを生成する。
+	 * @param table 
+	 */
+	protected abstract void createTableColumns(Table table);
+	
+	/**
+	 * 編集ボタンを無効にする。 編集ボタン領域のオプションのコントロールについては関知しない。
+	 */
+	protected void disableEditButtons() {
+		if (btnInsert != null) {
+			btnInsert.setEnabled(false);
+		}
+		if (btnRemove != null) {
+			btnRemove.setEnabled(false);
+		}
+		btnMoveUp.setEnabled(false);
+		btnMoveDown.setEnabled(false);
+	}
+	
+	/**
+	 * 詳細編集コントロールを無効化する。
+	 */
+	protected void disableEditDetailControls() {
+		// nothing to do
+	}
+	
+	/**
+	 * 編集ボタンを有効にする。 編集ボタン領域にオプションのコントロールについては関知しない。
+	 * 
+	 * @param index 選択されたindex
+	 */
+	protected void enableEditButtons(int index) {
+		if (btnInsert != null) {
+			btnInsert.setEnabled(true);
+		}
+		if (btnRemove != null) {
+			btnRemove.setEnabled(true);
+		}
+		btnMoveUp.setEnabled(true);
+		btnMoveDown.setEnabled(true);
+		
+		// 選択が一番上だった場合
+		if (index <= 0) {
+			btnMoveUp.setEnabled(false);
+		}
+		// 選択が一番下だった場合
+		if (index >= tableViewer.getTable().getItemCount() - 1) {
+			btnMoveDown.setEnabled(false);
+		}
+	}
+	
+	/**
+	 * 詳細編集コントロールを有効化する。
+	 * 
+	 * @param index
+	 */
+	protected void enableEditDetailControls(int index) {
+		// nothing to do
+	}
+	
+	/**
+	 * 挿入ボタンが押された時の処理を行う。
+	 * 
+	 * @return 追加されたモデル
+	 */
+	protected abstract Object insertTableSelectionItem();
+	
+	/**
+	 * 下ボタンが押された時の処理を行う。
+	 */
+	protected abstract void moveDownTableSelectionItem();
+	
+	/**
+	 * 上ボタンが押された時の処理を行う。
+	 */
+	protected abstract void moveUpTableSelectionItem();
+	
+	/**
+	 * 削除ボタンが押された時の処理を行う。
+	 * 
+	 * @return 削除されたモデル
+	 */
+	protected abstract Object removeTableSelectionItem();
+	
+	/**
+	 * TableからColumnを全て削除する。
+	 * @param table 
+	 */
+	private void removeTableColumns(Table table) {
+		for (TableColumn col : table.getColumns()) {
+			col.dispose();
+		}
+	}
+}


Property changes on: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/AbstractTableEditor.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Deleted: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/AbstractTableViewerEditArea.java
===================================================================
--- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/AbstractTableViewerEditArea.java	2009-02-17 10:24:44 UTC (rev 2680)
+++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/AbstractTableViewerEditArea.java	2009-02-17 13:48:44 UTC (rev 2681)
@@ -1,407 +0,0 @@
-package org.jiemamy.eclipse.ui;
-
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-
-/**
- * 「テーブル」「追加・削除・上・下ボタン」「詳細」形式の編集エリアクラス。
- * 
- * @author daisuke
- */
-public abstract class AbstractTableViewerEditArea {
-	
-	private TableViewer tableViewer;
-	
-	/** 追加ボタンに表示するラベルテキスト */
-	private String addLabel = null;
-	
-	/** 挿入ボタンに表示するラベルテキスト */
-	private String insertLabel = null;
-	
-	/** 削除ボタンに表示するラベルテキスト */
-	private String removeLabel = null;
-	
-	/** 追加ボタン */
-	private Button btnAdd;
-	
-	/** 挿入ボタン */
-	private Button btnInsert;
-	
-	/** 削除ボタン */
-	private Button btnRemove;
-	
-	/** 上ボタン */
-	private Button btnMoveUp;
-	
-	/** 下ボタン */
-	private Button btnMoveDown;
-	
-
-	/**
-	 * コントロールエリアを生成します。
-	 * 
-	 * @param parent 親
-	 * @return 生成されたコントロールエリア
-	 */
-	public Composite createControlArea(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NULL);
-		composite.setLayout(new GridLayout(1, false));
-		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-		
-		createTableViewer(composite);
-		createEditControls(composite);
-		
-		return composite;
-	}
-	
-	/**
-	 * 編集コントロールを無効にする。
-	 */
-	public void disableEditControls() {
-		disableEditButtons();
-		disableEditDetailControls();
-	}
-	
-	/**
-	 * 編集コントロールを有効にする。
-	 * 
-	 * @param index 選択されたindex
-	 */
-	public void enableEditControls(int index) {
-		enableEditButtons(index);
-		enableEditDetailControls(index);
-	}
-	
-	/**
-	 * tableViewerを取得する。
-	 * 
-	 * @return tableViewer
-	 */
-	public TableViewer getTableViewer() {
-		return tableViewer;
-	}
-	
-	/**
-	 * Tableをリフレッシュする。
-	 */
-	public void refreshTable() {
-		tableViewer.refresh();
-	}
-	
-	/**
-	 * カラムをリフレッシュする。
-	 */
-	public void refreshTableColumns() {
-		removeTableColumns();
-		createTableColumns();
-		refreshTable();
-	}
-	
-	/**
-	 * 追加ボタンに表示するラベルテキストを設定する。
-	 * 
-	 * @param addLabel 追加ボタンに表示するラベルテキスト
-	 */
-	public void setAddLabel(String addLabel) {
-		this.addLabel = addLabel;
-	}
-	
-	/**
-	 * 挿入ボタンに表示するラベルテキストを設定する。
-	 * 
-	 * @param insertLabel 挿入ボタンに表示するラベルテキスト
-	 */
-	public void setInsertLabel(String insertLabel) {
-		this.insertLabel = insertLabel;
-	}
-	
-	/**
-	 * 削除ボタンに表示するラベルテキストを設定する。
-	 * 
-	 * @param removeLabel 削除ボタンに表示するラベルテキスト
-	 */
-	public void setRemoveLabel(String removeLabel) {
-		this.removeLabel = removeLabel;
-	}
-	
-	/**
-	 * 追加ボタンが押された時の処理を行う。
-	 * 
-	 * @return 追加されたモデル
-	 */
-	protected abstract Object addItem();
-	
-	/**
-	 * CellEditorの設定を行う。
-	 */
-	protected void configureCellEditor() {
-		// nothing to do
-	}
-	
-	/**
-	 * 詳細編集コントロールの設定を行う。
-	 */
-	protected void configureDetailEditControls() {
-		// nothing to do
-	}
-	
-	/**
-	 * 編集ボタンの設定を行う。
-	 */
-	protected void configureEditButtons() {
-		if (addLabel != null) {
-			btnAdd.setText(addLabel);
-			btnAdd.addSelectionListener(new SelectionAdapter() {
-				
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					addItem();
-				}
-			});
-		}
-		
-		if (insertLabel != null) {
-			btnInsert.setText(insertLabel);
-			btnInsert.addSelectionListener(new SelectionAdapter() {
-				
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					insertTableSelectionItem();
-				}
-			});
-		}
-		
-		if (removeLabel != null) {
-			btnRemove.setText(removeLabel);
-			btnRemove.addSelectionListener(new SelectionAdapter() {
-				
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					removeTableSelectionItem();
-				}
-			});
-		}
-		
-		btnMoveUp.addSelectionListener(new SelectionAdapter() {
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				moveUpTableSelectionItem();
-			}
-		});
-		
-		btnMoveDown.addSelectionListener(new SelectionAdapter() {
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				moveDownTableSelectionItem();
-			}
-		});
-	}
-	
-	/**
-	 * Tableの設定を行う。
-	 */
-	protected void configureTable() {
-		final Table table = tableViewer.getTable();
-		table.setLayoutData(new GridData(GridData.FILL_BOTH));
-		table.setHeaderVisible(true);
-		table.setLinesVisible(true);
-		table.addSelectionListener(new SelectionAdapter() {
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				int index = table.getSelectionIndex();
-				if (index >= 0) {
-					enableEditControls(index);
-				} else {
-					disableEditControls();
-				}
-			}
-		});
-	}
-	
-	/**
-	 * TableViewerの設定を行う。
-	 */
-	protected abstract void configureTableViewer();
-	
-	/**
-	 * 編集ボタンを生成する。
-	 * 
-	 * @param parent 親
-	 * @return 生成した編集ボタン
-	 */
-	protected Composite createEditButtons(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NULL);
-		composite.setLayout(new RowLayout());
-		composite.setLayoutData(new GridData());
-		
-		if (addLabel != null) {
-			btnAdd = new Button(composite, SWT.PUSH);
-		}
-		if (insertLabel != null) {
-			btnInsert = new Button(composite, SWT.PUSH);
-		}
-		if (removeLabel != null) {
-			btnRemove = new Button(composite, SWT.PUSH);
-		}
-		
-		createOptionalEditButtons(composite);
-		
-		btnMoveUp = new Button(composite, SWT.ARROW | SWT.UP);
-		btnMoveDown = new Button(composite, SWT.ARROW | SWT.DOWN);
-		
-		return composite;
-	}
-	
-	/**
-	 * 編集コントロールを生成する。
-	 * 
-	 * @param parent 親
-	 */
-	protected void createEditControls(Composite parent) {
-		createEditButtons(parent);
-		configureEditButtons();
-		createEditDetailControls(parent);
-		configureDetailEditControls();
-	}
-	
-	/**
-	 * 詳細編集コントロールを生成する。
-	 * 
-	 * @param parent 親
-	 * @return 生成したコントロール
-	 */
-	protected Composite createEditDetailControls(Composite parent) {
-		// nothing to do
-		return null;
-	}
-	
-	/**
-	 * 編集ボタン領域にオプションのコントロールを生成する。 デフォルトでは何も行わない。必要であればオーバーライドする。
-	 * 
-	 * @param parent
-	 */
-	protected void createOptionalEditButtons(Composite parent) {
-		// noting to do
-	}
-	
-	/**
-	 * TableのColumnを生成する。
-	 */
-	protected abstract void createTableColumns();
-	
-	/**
-	 * 編集ボタンを無効にする。 編集ボタン領域にオプションのコントロールについては関知しない。
-	 */
-	protected void disableEditButtons() {
-		if (insertLabel != null) {
-			btnInsert.setEnabled(false);
-		}
-		if (removeLabel != null) {
-			btnRemove.setEnabled(false);
-		}
-		btnMoveUp.setEnabled(false);
-		btnMoveDown.setEnabled(false);
-	}
-	
-	/**
-	 * 詳細編集コントロールを無効化する。
-	 */
-	protected void disableEditDetailControls() {
-		// nothing to do
-	}
-	
-	/**
-	 * 編集ボタンを有効にする。 編集ボタン領域にオプションのコントロールについては関知しない。
-	 * 
-	 * @param index 選択されたindex
-	 */
-	protected void enableEditButtons(int index) {
-		if (insertLabel != null) {
-			btnInsert.setEnabled(true);
-		}
-		if (removeLabel != null) {
-			btnRemove.setEnabled(true);
-		}
-		btnMoveUp.setEnabled(true);
-		btnMoveDown.setEnabled(true);
-		
-		// 選択が一番上だった場合
-		if (index <= 0) {
-			btnMoveUp.setEnabled(false);
-		}
-		// 選択が一番下だった場合
-		if (index >= tableViewer.getTable().getItemCount() - 1) {
-			btnMoveDown.setEnabled(false);
-		}
-	}
-	
-	/**
-	 * 詳細編集コントロールを有効化する。
-	 * 
-	 * @param index
-	 */
-	protected void enableEditDetailControls(int index) {
-		// nothing to do
-	}
-	
-	/**
-	 * 挿入ボタンが押された時の処理を行う。
-	 * 
-	 * @return 追加されたモデル
-	 */
-	protected abstract Object insertTableSelectionItem();
-	
-	/**
-	 * 下ボタンが押された時の処理を行う。
-	 */
-	protected abstract void moveDownTableSelectionItem();
-	
-	/**
-	 * 上ボタンが押された時の処理を行う。
-	 */
-	protected abstract void moveUpTableSelectionItem();
-	
-	/**
-	 * 削除ボタンが押された時の処理を行う。
-	 * 
-	 * @return 削除されたモデル
-	 */
-	protected abstract Object removeTableSelectionItem();
-	
-	/**
-	 * TableViewerを生成し、各種設定を行う。
-	 * 
-	 * @param parent
-	 */
-	private void createTableViewer(Composite parent) {
-		tableViewer = new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
-		
-		configureTable();
-		createTableColumns();
-		configureTableViewer();
-		configureCellEditor();
-		refreshTable();
-	}
-	
-	/**
-	 * TableからColumnを全て削除する。
-	 */
-	private void removeTableColumns() {
-		Table table = tableViewer.getTable();
-		for (TableColumn col : table.getColumns()) {
-			col.dispose();
-		}
-	}
-}

Added: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/TableEditorConfigurator.java
===================================================================
--- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/TableEditorConfigurator.java	                        (rev 0)
+++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/TableEditorConfigurator.java	2009-02-17 13:48:44 UTC (rev 2681)
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2007-2009 Jiemamy Project and the Others.
+ * Created on 2009/02/17
+ *
+ * This file is part of Jiemamy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package org.jiemamy.eclipse.ui;
+
+/**
+ * TODO for daisuke
+ * 
+ * @author daisuke
+ */
+public interface TableEditorConfigurator {
+	
+	/**
+	 * 追加ボタンに表示するラベルテキストを取得する。
+	 * 
+	 * @return  追加ボタンに表示するラベルテキスト
+	 */
+	String getAddLabel();
+	
+	/**
+	 * TODO for daisuke
+	 * 
+	 * @return
+	 */
+	String getEditorTitle();
+	
+	/**
+	 * 挿入ボタンに表示するラベルテキストを取得する。
+	 * 
+	 * @return  挿入ボタンに表示するラベルテキスト
+	 */
+	String getInsertLabel();
+	
+	/**
+	 * 削除ボタンに表示するラベルテキストを取得する。
+	 * 
+	 * @return removeLabel 削除ボタンに表示するラベルテキスト
+	 */
+	String getRemoveLabel();
+	
+}


Property changes on: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/ui/TableEditorConfigurator.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain



Jiemamy-notify メーリングリストの案内
Back to archive index