/** * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio */ package com.hundsun.ares.studio.ui.editor.decorators; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; import com.hundsun.ares.studio.ui.editor.actions.IActionIDConstant; import com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock; import com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlockDecorator; /** * * �س����ƶ�����һ�У��������ĩ�������ָ��������Action * @author gongyf * */ public class EnterForNewLineTableViewerBlockDecorator extends ColumnViewerBlockDecorator<TableViewer> { public final static String ID = EnterForNewLineTableViewerBlockDecorator.class.getName(); private int editIndex = 0; /** * @return the editIndex */ public int getEditIndex() { return editIndex; } /** * @param editIndex the editIndex to set */ public void setEditIndex(int editIndex) { this.editIndex = editIndex; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlockDecorator#decorateViewer(com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock, org.eclipse.jface.viewers.ColumnViewer) */ @Override public void decorateViewer(final ColumnViewerBlock<TableViewer> block, final TableViewer viewer) { viewer.getTable().addKeyListener(new KeyListener() { @Override public void keyReleased(KeyEvent e) { } @Override public void keyPressed(KeyEvent e) { if (e.keyCode == '\r' && viewer.getTable().getSelectionCount() == 1) { int index = viewer.getTable().getSelectionIndex(); if (index >= 0) { if (index == viewer.getTable().getItemCount() - 1) { // ���һ�� IAction action = block.getActionRegistry().getAction(IActionIDConstant.CV_ADD); if (action != null && action.isEnabled()) { action.run(); // ����Ҫ������ӵ��г��ֺ���ܼ���༭ // viewer.refresh(); // viewer.editElement(viewer.getTable().getItem(viewer.getTable().getItemCount() - 1).getData(), getEditIndex()); } } else { viewer.getTable().setSelection(index + 1); // ��Ҫviewr��controlͬ�� viewer.setSelection(viewer.getSelection()); } } } } }); } }