|
|
|
@ -37,7 +37,7 @@ import java.util.EventObject;
|
|
|
|
|
class MobileParaWidgetTable extends JTable { |
|
|
|
|
|
|
|
|
|
private FormDesigner designer; |
|
|
|
|
private String[][] cellData ; |
|
|
|
|
private String[][] cellData; |
|
|
|
|
private String[] headers = {Inter.getLocText("FR-Utils_Label"), Inter.getLocText("Form-Widget_Name")}; |
|
|
|
|
private static final int WIDGET_TABLE_ROW_HEIGHT = 22; |
|
|
|
|
private static final int UITEXTFIELD_WIDTH = 0; |
|
|
|
@ -60,7 +60,7 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
tc.setMaxWidth(UITEXTFIELD_WIDTH); |
|
|
|
|
tc.setPreferredWidth(UITEXTFIELD_WIDTH); |
|
|
|
|
this.repaint(); |
|
|
|
|
this.setDefaultRenderer(Object.class,new MobileWidgetTableCellRenderer()); |
|
|
|
|
this.setDefaultRenderer(Object.class, new MobileWidgetTableCellRenderer()); |
|
|
|
|
refreshData(); |
|
|
|
|
this.addMouseListener(mouseAdapter); |
|
|
|
|
this.addMouseMotionListener(mouseAdapter); |
|
|
|
@ -97,12 +97,12 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public void mouseReleased(MouseEvent e) { |
|
|
|
|
if(!draging){ |
|
|
|
|
if (!draging) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
draging = false; |
|
|
|
|
moveComponent.setVisible(false); |
|
|
|
|
int toIndex = e.getY() < GAP ? 0 : (int)Math.rint((e.getY() - GAP)/WIDGET_TABLE_ROW_HEIGHT) + 1; |
|
|
|
|
int toIndex = e.getY() < GAP ? 0 : (int) Math.rint((e.getY() - GAP) / WIDGET_TABLE_ROW_HEIGHT) + 1; |
|
|
|
|
//当鼠标放开时,将选中的容器调整至新的顺序
|
|
|
|
|
((WParameterLayout) designer.getParaComponent().toData()).adjustOrder(selectedRow, toIndex); |
|
|
|
|
//拿取排序后表格数据,然后重绘表格
|
|
|
|
@ -120,13 +120,13 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
public void mouseMoved(MouseEvent e) { |
|
|
|
|
int overColumn = e.getX() < getColumnModel().getColumn(0).getWidth() ? 0 : 1; // 判断当前鼠标在哪一列
|
|
|
|
|
int overRow = -1; |
|
|
|
|
for (int i = 0;i < getRowCount();i++) { |
|
|
|
|
for (int i = 0; i < getRowCount(); i++) { |
|
|
|
|
if (e.getY() > i * WIDGET_TABLE_ROW_HEIGHT && e.getY() <= (i + 1) * WIDGET_TABLE_ROW_HEIGHT) { |
|
|
|
|
overRow = i; //判断当前鼠标在哪一行
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
//如果鼠标移动到当前选中的行列上面的时候,并且不能在第一列
|
|
|
|
|
if (overRow == selectedRow && overColumn == selectedColumn && overColumn !=0) { |
|
|
|
|
if (overRow == selectedRow && overColumn == selectedColumn && overColumn != 0) { |
|
|
|
|
//把当前选中的那一列行的光标改成(除了第一列)移动样式MOVE_CURSOR
|
|
|
|
|
setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); |
|
|
|
|
} else { |
|
|
|
@ -143,7 +143,7 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
public void mouseDragged(MouseEvent e) { |
|
|
|
|
int width = getColumnModel().getColumn(1).getWidth(); |
|
|
|
|
//如果点击选中的是第二列,就可以拖动
|
|
|
|
|
if (selectedColumn == 1){ |
|
|
|
|
if (selectedColumn == 1) { |
|
|
|
|
setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); |
|
|
|
|
draging = true; |
|
|
|
|
moveComponent.setText(getValueAt(selectedRow, selectedColumn).toString()); |
|
|
|
@ -161,14 +161,14 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public void mouseClicked(MouseEvent e) { |
|
|
|
|
if(getSelectedRow() != -1 && getSelectedColumn() == 1){ |
|
|
|
|
if (getSelectedRow() != -1 && getSelectedColumn() == 1) { |
|
|
|
|
String widgetName = cellData[getSelectedRow()][getSelectedColumn()]; |
|
|
|
|
if (StringUtils.isNotEmpty(widgetName)){ |
|
|
|
|
if (StringUtils.isNotEmpty(widgetName)) { |
|
|
|
|
int count = getEditingDesigner().getParaComponent().getComponentCount(); |
|
|
|
|
for (int i = 0; i < count; i++){ |
|
|
|
|
XCreator xCreator = (XCreator)getEditingDesigner().getParaComponent().getComponent(i); |
|
|
|
|
for (int i = 0; i < count; i++) { |
|
|
|
|
XCreator xCreator = (XCreator) getEditingDesigner().getParaComponent().getComponent(i); |
|
|
|
|
Widget widget = xCreator.toData(); |
|
|
|
|
if (!widget.acceptType(Label.class) && ComparatorUtils.equals(widgetName,widget.getWidgetName())) { |
|
|
|
|
if (!widget.acceptType(Label.class) && ComparatorUtils.equals(widgetName, widget.getWidgetName())) { |
|
|
|
|
//设置选中的component,这句代码控制点击之后跳转到相应component属性表
|
|
|
|
|
getEditingDesigner().getSelectionModel().setSelectedCreator(xCreator); |
|
|
|
|
} |
|
|
|
@ -189,11 +189,11 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
public MobileParaWidgetTable getInstance(){ |
|
|
|
|
public MobileParaWidgetTable getInstance() { |
|
|
|
|
return this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private FormDesigner getEditingDesigner(){ |
|
|
|
|
private FormDesigner getEditingDesigner() { |
|
|
|
|
return designer; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -214,7 +214,7 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
/** |
|
|
|
|
* 重新get排序后的数据 |
|
|
|
|
*/ |
|
|
|
|
public void refreshData(){ |
|
|
|
|
public void refreshData() { |
|
|
|
|
cellData = getData(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -223,9 +223,9 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
* |
|
|
|
|
* @return String[][] 二维数组,[0][0]widgetTag, [0][1]widgetName |
|
|
|
|
*/ |
|
|
|
|
private String[][] getData(){ |
|
|
|
|
private String[][] getData() { |
|
|
|
|
XLayoutContainer paraContainer = designer.getParaComponent(); |
|
|
|
|
if(paraContainer == null || !paraContainer.acceptType(XWParameterLayout.class)){ |
|
|
|
|
if (paraContainer == null || !paraContainer.acceptType(XWParameterLayout.class)) { |
|
|
|
|
return new String[0][0]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -236,14 +236,14 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
/** |
|
|
|
|
* 自定义的tableRender类 |
|
|
|
|
*/ |
|
|
|
|
private class MobileWidgetTableCellRenderer extends DefaultTableCellRenderer{ |
|
|
|
|
private class MobileWidgetTableCellRenderer extends DefaultTableCellRenderer { |
|
|
|
|
@Override |
|
|
|
|
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, |
|
|
|
|
boolean hasFocus, int row, int column) { |
|
|
|
|
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); |
|
|
|
|
if (column == 0){ |
|
|
|
|
if (column == 0) { |
|
|
|
|
UITextField uiTableTextField; |
|
|
|
|
if (getSelectedColumn() == column && getSelectedRow() == row){ |
|
|
|
|
if (getSelectedColumn() == column && getSelectedRow() == row) { |
|
|
|
|
uiTableTextField = new UITableTextField(value.toString()); |
|
|
|
|
} else { |
|
|
|
|
uiTableTextField = new UITextField(value.toString()); |
|
|
|
@ -260,7 +260,8 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
*/ |
|
|
|
|
private class MobileCellEditor extends AbstractCellEditor implements TableCellEditor { |
|
|
|
|
UITableTextField uiTableTextField; |
|
|
|
|
MobileCellEditor(){ |
|
|
|
|
|
|
|
|
|
MobileCellEditor() { |
|
|
|
|
uiTableTextField = new UITableTextField(); |
|
|
|
|
uiTableTextField.addFocusListener(new FocusAdapter() { |
|
|
|
|
@Override |
|
|
|
@ -291,7 +292,7 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
* cell改变,相应的nametag改变 |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
private void firePropertyChange(){ |
|
|
|
|
private void firePropertyChange() { |
|
|
|
|
((WParameterLayout) designer.getParaComponent().toData()).add2NameTagMap(uiTableTextField.getText(), |
|
|
|
|
cellData[getSelectedRow()][1]); |
|
|
|
|
((WParameterLayout) designer.getParaComponent().toData()).setNameTagModified(cellData[getSelectedRow()][1], |
|
|
|
@ -299,7 +300,7 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object getCellEditorValue(){ |
|
|
|
|
public Object getCellEditorValue() { |
|
|
|
|
return uiTableTextField.getText(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -312,8 +313,8 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Component getTableCellEditorComponent( JTable table,Object value, |
|
|
|
|
boolean isSelected,int row,int column){ |
|
|
|
|
public Component getTableCellEditorComponent(JTable table, Object value, |
|
|
|
|
boolean isSelected, int row, int column) { |
|
|
|
|
uiTableTextField.setText(value.toString()); |
|
|
|
|
return uiTableTextField; |
|
|
|
|
} |
|
|
|
@ -374,12 +375,13 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 是否可编辑 控件标签列可以编辑,控件名不可编辑 |
|
|
|
|
* |
|
|
|
|
* @param row 行号 |
|
|
|
|
* @param column 列号 |
|
|
|
|
* @return 是否可编辑 |
|
|
|
|
*/ |
|
|
|
|
public boolean isCellEditable(int row, int column) { |
|
|
|
|
if(column ==1){ |
|
|
|
|
if (column == 1) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
@ -391,11 +393,11 @@ class MobileParaWidgetTable extends JTable {
|
|
|
|
|
* 继承自JTextField类,重写了编辑框的样式 |
|
|
|
|
*/ |
|
|
|
|
private class UITableTextField extends UITextField { |
|
|
|
|
public UITableTextField(){ |
|
|
|
|
public UITableTextField() { |
|
|
|
|
super(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public UITableTextField(String string){ |
|
|
|
|
public UITableTextField(String string) { |
|
|
|
|
super(string); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|