forked from fanruan/demo-tabledata-redis
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.0 KiB
104 lines
3.0 KiB
package com.fr.plugin.db.redis.ui; |
|
|
|
import com.fr.base.BaseUtils; |
|
import com.fr.base.ParameterHelper; |
|
import com.fr.data.impl.NameDatabaseConnection; |
|
import com.fr.design.actions.UpdateAction; |
|
import com.fr.design.data.datapane.preview.PreviewTablePane; |
|
import com.fr.design.data.tabledata.tabledatapane.AbstractTableDataPane; |
|
import com.fr.design.gui.itableeditorpane.ParameterTableModel; |
|
import com.fr.design.gui.itableeditorpane.UITableEditAction; |
|
import com.fr.design.gui.itableeditorpane.UITableEditorPane; |
|
import com.fr.design.gui.itoolbar.UIToolbar; |
|
import com.fr.design.i18n.Toolkit; |
|
import com.fr.design.menu.ToolBarDef; |
|
import com.fr.general.ComparatorUtils; |
|
import com.fr.general.Inter; |
|
import com.fr.plugin.db.redis.core.RedisTableData; |
|
import com.fr.plugin.db.redis.core.order.OrderValue; |
|
import com.fr.script.Calculator; |
|
import com.fr.stable.ArrayUtils; |
|
import com.fr.stable.ParameterProvider; |
|
import com.fr.stable.StringUtils; |
|
|
|
import javax.swing.*; |
|
import java.awt.*; |
|
import java.awt.event.ActionEvent; |
|
import java.awt.event.FocusEvent; |
|
import java.util.ArrayList; |
|
import java.util.List; |
|
|
|
|
|
public class RedisTableDataPane extends RedisBaseTableDataPane<RedisTableData> { |
|
|
|
private RedisQueryPane queryPane; |
|
|
|
|
|
public RedisTableDataPane() { |
|
super(); |
|
} |
|
|
|
|
|
@Override |
|
protected String title4PopupWindow() { |
|
return Toolkit.i18nText("Plugin-Redis_Query"); |
|
} |
|
|
|
protected JComponent createQueryPane() { |
|
if (queryPane == null) { |
|
queryPane = new RedisQueryPane(); |
|
} |
|
return queryPane; |
|
} |
|
|
|
public String[] paramTexts() { |
|
return new String[]{queryPane.getQuery(), queryPane.getScript()}; |
|
} |
|
|
|
@Override |
|
public OrderValue getOrderValue() { |
|
return queryPane.getOrderValue(); |
|
} |
|
|
|
@Override |
|
public void populateBean(RedisTableData tableData) { |
|
if (tableData == null) { |
|
return; |
|
} |
|
Calculator c = Calculator.createCalculator(); |
|
|
|
editorPane.populate(tableData.getParameters(c)); |
|
|
|
chosePane.populateConnection(tableData.getDatabase()); |
|
|
|
queryPane.setQuery(tableData.getQuery()); |
|
|
|
queryPane.setScript(tableData.getScript()); |
|
|
|
queryPane.setOrderValue(tableData.getOrderValue()); |
|
|
|
} |
|
|
|
|
|
@Override |
|
public RedisTableData updateBean() { |
|
RedisTableData tableData = new RedisTableData(); |
|
|
|
String connectionName = chosePane.getSelectRedisConnectionName(); |
|
if (StringUtils.isNotEmpty(connectionName)) { |
|
tableData.setDatabase(new NameDatabaseConnection(connectionName)); |
|
} |
|
|
|
List<ParameterProvider> parameterList = editorPane.update(); |
|
ParameterProvider[] parameters = parameterList.toArray(new ParameterProvider[parameterList.size()]); |
|
tableData.setParameters(parameters); |
|
|
|
tableData.setQuery(queryPane.getQuery()); |
|
|
|
tableData.setScript(queryPane.getScript()); |
|
|
|
tableData.setOrderValue(queryPane.getOrderValue()); |
|
|
|
return tableData; |
|
} |
|
} |