@ -1,62 +0,0 @@ |
|||||||
package com.fr.design.cache; |
|
||||||
|
|
||||||
import com.fr.base.TableData; |
|
||||||
import com.fr.design.data.tabledata.wrapper.TableDataFactory; |
|
||||||
|
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
/** |
|
||||||
* 设计器缓存管理 |
|
||||||
* |
|
||||||
* @author Destiny.Lin |
|
||||||
* @since 11.0 |
|
||||||
* Created on 2024/8/11 |
|
||||||
*/ |
|
||||||
public class DesignCacheManager { |
|
||||||
|
|
||||||
public static ThreadLocal<Map<String, TableData>> cacheTableData = new ThreadLocal<>(); |
|
||||||
|
|
||||||
/** |
|
||||||
* 处理任务(使用数据集缓存) |
|
||||||
*/ |
|
||||||
public static void processByCacheTableData(Task task) { |
|
||||||
try { |
|
||||||
cacheTableData.set(TableDataFactory.getTableDatas()); |
|
||||||
task.process(); |
|
||||||
} finally { |
|
||||||
cacheTableData.remove(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* 是否使用数据集的缓存 |
|
||||||
*/ |
|
||||||
public static boolean useDataCache() { |
|
||||||
return cacheTableData.get() != null; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 获取数据集缓存 |
|
||||||
*/ |
|
||||||
public static ThreadLocal<Map<String, TableData>> getCacheTableData() { |
|
||||||
return cacheTableData; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 设置数据集缓存 |
|
||||||
*/ |
|
||||||
public static void setCacheTableData(ThreadLocal<Map<String, TableData>> cacheTableData) { |
|
||||||
DesignCacheManager.cacheTableData = cacheTableData; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 任务 |
|
||||||
*/ |
|
||||||
public interface Task { |
|
||||||
/** |
|
||||||
* 处理 |
|
||||||
*/ |
|
||||||
void process(); |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,52 @@ |
|||||||
|
package com.fr.design.remote.ui.debug; |
||||||
|
|
||||||
|
import com.fine.theme.icon.LazyIcon; |
||||||
|
import com.fine.theme.light.ui.FineTableHeaderUI; |
||||||
|
|
||||||
|
import javax.swing.Icon; |
||||||
|
import javax.swing.JTable; |
||||||
|
import javax.swing.RowSorter; |
||||||
|
import javax.swing.SortOrder; |
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* 远程调试界面表头 |
||||||
|
* |
||||||
|
* @author vito |
||||||
|
* @since 11.0 |
||||||
|
* Created on 2024/10/17 |
||||||
|
*/ |
||||||
|
public class HeaderRenderer extends FineTableHeaderUI.TableHeaderRenderer { |
||||||
|
private final Icon ascendingIcon = new LazyIcon("sort_asc"); |
||||||
|
private final Icon descendingIcon = new LazyIcon("sort_desc"); |
||||||
|
private final Icon nosortIcon = new LazyIcon("nosort"); |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public Component getTableCellRendererComponent(JTable table, Object value, |
||||||
|
boolean isSelected, boolean hasFocus, |
||||||
|
int row, int col) { |
||||||
|
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col); |
||||||
|
|
||||||
|
int modelColumn = table.convertColumnIndexToModel(col); |
||||||
|
setIcon(null); |
||||||
|
RemoteDesignNetWorkTableRowSorter sorter = (RemoteDesignNetWorkTableRowSorter) table.getRowSorter(); |
||||||
|
|
||||||
|
if (!sorter.isSortable(modelColumn)) { |
||||||
|
return this; |
||||||
|
} |
||||||
|
SortOrder sortOrder = sorter.getSortKeys().stream() |
||||||
|
.filter(key -> key.getColumn() == modelColumn) |
||||||
|
.map(RowSorter.SortKey::getSortOrder) |
||||||
|
.findFirst() |
||||||
|
.orElse(null); |
||||||
|
if (sortOrder == SortOrder.ASCENDING) { |
||||||
|
setIcon(ascendingIcon); |
||||||
|
} else if (sortOrder == SortOrder.DESCENDING) { |
||||||
|
setIcon(descendingIcon); |
||||||
|
} else { |
||||||
|
setIcon(nosortIcon); |
||||||
|
} |
||||||
|
return this; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
package com.fr.design.remote.ui.debug; |
||||||
|
|
||||||
|
import com.fine.theme.light.ui.FineTableHeaderUI; |
||||||
|
|
||||||
|
import java.awt.Color; |
||||||
|
|
||||||
|
import static com.fr.design.remote.ui.debug.RemoteDesignNetWorkHelper.DEFAULT_COLOR; |
||||||
|
|
||||||
|
/** |
||||||
|
* 大小多颜色渲染 |
||||||
|
* |
||||||
|
* @author vito |
||||||
|
* @since 11.0 |
||||||
|
* Created on 2024/10/16 |
||||||
|
*/ |
||||||
|
public class SizeColorCellRenderer extends FineTableHeaderUI.TableRenderer { |
||||||
|
private static final int UNIT_BYTES = 1024; |
||||||
|
private static final int SIZE_MIDDLE = UNIT_BYTES * 100; |
||||||
|
private static final int SIZE_LARGE = UNIT_BYTES * 200; |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
protected void setValue(Object value) { |
||||||
|
|
||||||
|
if (value instanceof String) { |
||||||
|
long parsed = RemoteDesignNetWorkHelper.parseSizeToBytes((String) value); |
||||||
|
if (parsed > SIZE_LARGE) { |
||||||
|
setForeground(Color.RED); |
||||||
|
} else if (parsed > SIZE_MIDDLE) { |
||||||
|
setForeground(Color.ORANGE); |
||||||
|
} else { |
||||||
|
setForeground(DEFAULT_COLOR); |
||||||
|
} |
||||||
|
} |
||||||
|
setText((value == null) ? "" : value.toString()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
package com.fr.design.remote.ui.debug; |
||||||
|
|
||||||
|
import com.fine.theme.light.ui.FineTableHeaderUI; |
||||||
|
|
||||||
|
import java.awt.Color; |
||||||
|
|
||||||
|
import static com.fr.design.remote.ui.debug.RemoteDesignNetWorkHelper.DEFAULT_COLOR; |
||||||
|
|
||||||
|
/** |
||||||
|
* 时间多颜色渲染 |
||||||
|
* |
||||||
|
* @author vito |
||||||
|
* @since 11.0 |
||||||
|
* Created on 2024/10/16 |
||||||
|
*/ |
||||||
|
public class TimeColorCellRenderer extends FineTableHeaderUI.TableRenderer { |
||||||
|
|
||||||
|
private static final int SIZE_MIDDLE = 1000; |
||||||
|
private static final int SIZE_LARGE = 5000; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
protected void setValue(Object value) { |
||||||
|
|
||||||
|
if (value instanceof String) { |
||||||
|
long parsed = RemoteDesignNetWorkHelper.parseCostToMS((String) value); |
||||||
|
if (parsed > SIZE_LARGE) { |
||||||
|
setForeground(Color.RED); |
||||||
|
} else if (parsed > SIZE_MIDDLE) { |
||||||
|
setForeground(Color.ORANGE); |
||||||
|
} else { |
||||||
|
setForeground(DEFAULT_COLOR); |
||||||
|
} |
||||||
|
} |
||||||
|
setText((value == null) ? "" : value.toString()); |
||||||
|
} |
||||||
|
} |
After Width: | Height: | Size: 437 B |
After Width: | Height: | Size: 418 B |
After Width: | Height: | Size: 426 B |
After Width: | Height: | Size: 426 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 574 B |
After Width: | Height: | Size: 417 B |
After Width: | Height: | Size: 398 B |
After Width: | Height: | Size: 428 B |
After Width: | Height: | Size: 409 B |
After Width: | Height: | Size: 422 B |
After Width: | Height: | Size: 400 B |
After Width: | Height: | Size: 417 B |
After Width: | Height: | Size: 417 B |
After Width: | Height: | Size: 619 B |
After Width: | Height: | Size: 567 B |