feat(gui): add "Copy All" button to Search dialog (PR #2480)
* add copy all button in CommonSearchDialog * fix i18n test error --------- Co-authored-by: ymoon <ymoon@ymoon.com>
This commit is contained in:
@@ -16,7 +16,9 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.swing.AbstractAction;
|
||||
import javax.swing.BorderFactory;
|
||||
@@ -178,6 +180,18 @@ public abstract class CommonSearchDialog extends JFrame {
|
||||
UiUtils.addEscapeShortCutToDispose(this);
|
||||
}
|
||||
|
||||
protected void copyAllSearchResults() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
Set<String> uniqueRefs = new HashSet<>();
|
||||
for (JNode node : resultsModel.rows) {
|
||||
String codeNodeRef = node.getJavaNode().getCodeNodeRef().toString();
|
||||
if (uniqueRefs.add(codeNodeRef)) {
|
||||
sb.append(codeNodeRef).append("\n");
|
||||
}
|
||||
}
|
||||
UiUtils.copyToClipboard(sb.toString());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected JPanel initButtonsPanel() {
|
||||
progressPane = new ProgressPanel(mainWindow, false);
|
||||
@@ -187,6 +201,8 @@ public abstract class CommonSearchDialog extends JFrame {
|
||||
JButton openBtn = new JButton(NLS.str("search_dialog.open"));
|
||||
openBtn.addActionListener(event -> openSelectedItem());
|
||||
getRootPane().setDefaultButton(openBtn);
|
||||
JButton copyBtn = new JButton(NLS.str("search_dialog.copy"));
|
||||
copyBtn.addActionListener(event -> copyAllSearchResults());
|
||||
|
||||
JCheckBox cbKeepOpen = new JCheckBox(NLS.str("search_dialog.keep_open"));
|
||||
cbKeepOpen.setSelected(mainWindow.getSettings().getKeepCommonDialogOpen());
|
||||
@@ -203,6 +219,8 @@ public abstract class CommonSearchDialog extends JFrame {
|
||||
buttonPane.add(progressPane);
|
||||
buttonPane.add(Box.createRigidArea(new Dimension(5, 0)));
|
||||
buttonPane.add(Box.createHorizontalGlue());
|
||||
buttonPane.add(copyBtn);
|
||||
buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
|
||||
buttonPane.add(openBtn);
|
||||
buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
|
||||
buttonPane.add(cancelButton);
|
||||
@@ -440,8 +458,8 @@ public abstract class CommonSearchDialog extends JFrame {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getTableCellRendererComponent(JTable table, Object obj,
|
||||
boolean isSelected, boolean hasFocus, int row, int column) {
|
||||
public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row,
|
||||
int column) {
|
||||
if (obj == null || table == null) {
|
||||
return emptyLabel;
|
||||
}
|
||||
|
||||
@@ -164,6 +164,7 @@ search_dialog.keep_open=Offen halten
|
||||
search_dialog.tip_searching=Suchen…
|
||||
search_dialog.limit_package=Begrenzung auf Paket:
|
||||
search_dialog.package_not_found=Kein passendes Paket gefunden
|
||||
search_dialog.copy=alles kopieren
|
||||
|
||||
usage_dialog.title=Verwendungssuche
|
||||
usage_dialog.label=Verwendungen von:
|
||||
|
||||
@@ -164,6 +164,7 @@ search_dialog.keep_open=Keep open
|
||||
search_dialog.tip_searching=Searching
|
||||
search_dialog.limit_package=Limit to package:
|
||||
search_dialog.package_not_found=No matching package found
|
||||
search_dialog.copy=copy all
|
||||
|
||||
usage_dialog.title=Usage search
|
||||
usage_dialog.label=Usage for:
|
||||
|
||||
@@ -164,6 +164,7 @@ search_dialog.regex=Regex
|
||||
#search_dialog.tip_searching=Searching
|
||||
#search_dialog.limit_package=Limit to package:
|
||||
#search_dialog.package_not_found=No matching package found
|
||||
search_dialog.copy=copiar todo
|
||||
|
||||
usage_dialog.title=Usage search
|
||||
usage_dialog.label=Usage for:
|
||||
|
||||
@@ -164,6 +164,7 @@ search_dialog.keep_open=Tetap terbuka
|
||||
search_dialog.tip_searching=Mencari
|
||||
#search_dialog.limit_package=Limit to package:
|
||||
#search_dialog.package_not_found=No matching package found
|
||||
search_dialog.copy=salin semua
|
||||
|
||||
usage_dialog.title=Pencarian penggunaan
|
||||
usage_dialog.label=Penggunaan untuk:
|
||||
|
||||
@@ -164,6 +164,7 @@ search_dialog.keep_open=열어 두기
|
||||
search_dialog.tip_searching=검색 중...
|
||||
#search_dialog.limit_package=Limit to package:
|
||||
#search_dialog.package_not_found=No matching package found
|
||||
search_dialog.copy=모두 복사
|
||||
|
||||
usage_dialog.title=사용 검색
|
||||
usage_dialog.label=다음의 사용 검색 결과:
|
||||
|
||||
@@ -164,6 +164,7 @@ search_dialog.keep_open=Manter aberto
|
||||
search_dialog.tip_searching=Buscando
|
||||
#search_dialog.limit_package=Limit to package:
|
||||
#search_dialog.package_not_found=No matching package found
|
||||
search_dialog.copy=skopiuj wszystko
|
||||
|
||||
usage_dialog.title=Busca por utilização
|
||||
usage_dialog.label=Usado por:
|
||||
|
||||
@@ -164,6 +164,7 @@ search_dialog.keep_open=Оставлять поиск открытым
|
||||
search_dialog.tip_searching=Поиск...
|
||||
#search_dialog.limit_package=Limit to package:
|
||||
#search_dialog.package_not_found=No matching package found
|
||||
search_dialog.copy=скопировать все
|
||||
|
||||
usage_dialog.title=Поиск использований
|
||||
usage_dialog.label=Использования:
|
||||
|
||||
@@ -164,6 +164,7 @@ search_dialog.keep_open=保持窗口
|
||||
search_dialog.tip_searching=搜索中…
|
||||
search_dialog.limit_package=限制package:
|
||||
search_dialog.package_not_found=没有找到匹配的package
|
||||
search_dialog.copy=复制全部
|
||||
|
||||
usage_dialog.title=查找
|
||||
usage_dialog.label=查找用例:
|
||||
|
||||
@@ -164,6 +164,7 @@ search_dialog.keep_open=保持開啟
|
||||
search_dialog.tip_searching=正在搜尋
|
||||
search_dialog.limit_package=限制至套件:
|
||||
search_dialog.package_not_found=找不到符合的套件
|
||||
search_dialog.copy=複製全部
|
||||
|
||||
usage_dialog.title=使用情況搜尋
|
||||
usage_dialog.label=使用情況:
|
||||
|
||||
Reference in New Issue
Block a user