Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,8 @@
import java.awt.Image;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyVetoException;
Expand Down Expand Up @@ -87,7 +84,7 @@ private DocumentsDlg () {
initComponents();

// Internationalize.
Mnemonics.setLocalizedText(jButtonActivate, NbBundle.getMessage(DocumentsDlg.class, "LBL_Activate"));
Mnemonics.setLocalizedText(jButtonActivate, NbBundle.getMessage(DocumentsDlg.class, "LBL_Activate"));
Mnemonics.setLocalizedText(jButtonClose, NbBundle.getMessage(DocumentsDlg.class, "LBL_CloseDocuments"));
Mnemonics.setLocalizedText(jButtonSave, NbBundle.getMessage(DocumentsDlg.class, "LBL_SaveDocuments"));
Mnemonics.setLocalizedText(explorerLabel, NbBundle.getMessage(DocumentsDlg.class, "LBL_Documents"));
Expand All @@ -106,12 +103,8 @@ private DocumentsDlg () {
closeButton.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage(DocumentsDlg.class, "ACSD_Close"));
descriptionArea.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage(DocumentsDlg.class, "ACSD_DescriptionArea"));

ItemListener orderingListener = new ItemListener() {

@Override
public void itemStateChanged( ItemEvent e ) {
updateNodes();
}
ItemListener orderingListener = (e) -> {
updateNodes();
};
radioOrderByName.addItemListener( orderingListener );
radioOrderByUsage.addItemListener( orderingListener );
Expand Down Expand Up @@ -290,7 +283,7 @@ private void saveDocuments(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sa
for (int i = 0; i < selNodes.length; i++) {
TopComponent tc = ((TopComponentNode) selNodes[i]).getTopComponent();
Lookup l = tc.getLookup();
SaveCookie sc = (SaveCookie) l.lookup(SaveCookie.class);
SaveCookie sc = l.lookup(SaveCookie.class);
if (sc != null) {
try {
sc.save();
Expand All @@ -315,24 +308,24 @@ private void closeDocuments(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_c
if (selNodes.length == 0) {
return;
}
//#70965 begin - select document previous to first closed document
int positionToSelectAfter = 0;
// avoid moving the selection if possible
int selectionStart = 0;
Node[] children = explorer.getRootContext().getChildren().getNodes();
for (int i = 0; i < children.length; i++) {
if (children[i] == selNodes[0]) {
positionToSelectAfter = Math.max(0, i - 1);
selectionStart = i;
break;
}
}
//#70965 end

for (int i = 0; i < selNodes.length; i++) {
TopComponent tc = ((TopComponentNode) selNodes[i]).getTopComponent();
if( Switches.isEditorTopComponentClosingEnabled() && Switches.isClosingEnabled( tc ) )
tc.close();
}

List<TopComponent> tcList = getOpenedDocuments();
List<TopComponentNode> tcNodes = new ArrayList<TopComponentNode> (tcList.size());
List<TopComponentNode> tcNodes = new ArrayList<>(tcList.size());
for (TopComponent tc : tcList) {
tcNodes.add(new TopComponentNode(tc));
}
Expand All @@ -346,12 +339,15 @@ private void closeDocuments(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_c
java.util.Collections.sort(tcNodes);
}
Children.Array nodeArray = new Children.Array();
nodeArray.add((TopComponentNode[])tcNodes.toArray(new TopComponentNode[0]));
nodeArray.add(tcNodes.toArray(TopComponentNode[]::new));
Node root = new AbstractNode(nodeArray);
explorer.setRootContext(root);
//#54656 begin
try {
explorer.setSelectedNodes(new Node[]{root.getChildren().getNodes()[positionToSelectAfter]});
Node[] nodes = root.getChildren().getNodes();
explorer.setSelectedNodes(new Node[] {
nodes[Math.min(selectionStart, nodes.length - 1)]
});
} catch (PropertyVetoException exc) {
//mkleint - well, what can we do, I've never seen the selection being vetoed anyway.
}
Expand All @@ -372,16 +368,14 @@ private void activate(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_activat
final TopComponent tc = ((TopComponentNode) selNodes[0]).getTopComponent();
//Call using invokeLater to make sure it is performed after dialog
//is closed.
SwingUtilities.invokeLater(new Runnable () {
public void run() {
// #37226-41075 Unmaximized the other mode if needed.
WindowManagerImpl wm = WindowManagerImpl.getInstance();
ModeImpl mode = (ModeImpl)wm.findMode(tc);
if(mode != null && mode != wm.getCurrentMaximizedMode()) {
wm.switchMaximizedMode(null);
}
tc.requestActive();
SwingUtilities.invokeLater(() -> {
// #37226-41075 Unmaximized the other mode if needed.
WindowManagerImpl wm = WindowManagerImpl.getInstance();
ModeImpl mode = (ModeImpl)wm.findMode(tc);
if(mode != null && mode != wm.getCurrentMaximizedMode()) {
wm.switchMaximizedMode(null);
}
tc.requestActive();
});
}//GEN-LAST:event_activate

Expand Down Expand Up @@ -430,8 +424,8 @@ public static void showDocumentsDialog() {
dlgDesc.setHelpCtx( null ); //hide the default Help button
final Dialog dlg = DialogDisplayer.getDefault().createDialog(dlgDesc);
dlg.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage(DocumentsDlg.class, "ACSD_DocumentsDialog"));
if( dlg instanceof JDialog ) {
HelpCtx.setHelpIDString(((JDialog)dlg).getRootPane(), documentsPanel.getHelpCtx().getHelpID());
if (dlg instanceof JDialog jd) {
HelpCtx.setHelpIDString(jd.getRootPane(), documentsPanel.getHelpCtx().getHelpID());
}
getDefault().updateNodes();

Expand Down Expand Up @@ -527,7 +521,7 @@ private void clearNodes() {
private static List<TopComponent> getOpenedDocuments() {
WindowManagerImpl wm = WindowManagerImpl.getInstance();
TopComponent[] recentDocuments = wm.getRecentViewList();
List<TopComponent> documents = new ArrayList<TopComponent> (recentDocuments.length);
List<TopComponent> documents = new ArrayList<>(recentDocuments.length);
TopComponentTracker tcTracker = TopComponentTracker.getDefault();
for( TopComponent tc : recentDocuments ) {
if( tcTracker.isEditorTopComponent( tc ) ) {
Expand All @@ -538,6 +532,7 @@ private static List<TopComponent> getOpenedDocuments() {
return documents;
}

@Override
public void propertyChange(PropertyChangeEvent evt) {
if (ExplorerManager.PROP_SELECTED_NODES.equals(evt.getPropertyName())) {
Node [] selNodes = (Node []) evt.getNewValue();
Expand Down Expand Up @@ -565,7 +560,7 @@ public void propertyChange(PropertyChangeEvent evt) {
for (int i = 0; i < selNodes.length; i++) {
TopComponent tc = ((TopComponentNode) selNodes[i]).getTopComponent();
Lookup l = tc.getLookup();
SaveCookie sc = (SaveCookie) l.lookup(SaveCookie.class);
SaveCookie sc = l.lookup(SaveCookie.class);
if (sc != null) {
enableSave = true;
break;
Expand All @@ -574,7 +569,7 @@ public void propertyChange(PropertyChangeEvent evt) {
jButtonSave.setEnabled(enableSave);

// Set description.
if(selNodes != null && selNodes.length == 1) {
if(selNodes.length == 1) {
descriptionArea.setText(((TopComponentNode)selNodes[0]).getDescription());
} else {
descriptionArea.setText(null);
Expand All @@ -599,6 +594,7 @@ public void propertyChange(PropertyChangeEvent evt) {
// End of variables declaration//GEN-END:variables
private ListView listView;

@Override
public ExplorerManager getExplorerManager() {
return explorer;
}
Expand All @@ -609,14 +605,15 @@ public ExplorerManager getExplorerManager() {
private class TopComponentNode extends AbstractNode
implements Comparable<TopComponentNode>, Action, PropertyChangeListener {

private TopComponent tc;
private final TopComponent tc;

public TopComponentNode (TopComponent tc) {
super(Children.LEAF);
this.tc = tc;
tc.addPropertyChangeListener(WeakListeners.propertyChange(this, tc));
}

@Override
public String getName() {
// #60263: apparently used by functional tests.
String result = tc.getName();
Expand All @@ -626,16 +623,19 @@ public String getName() {
result = tc.toString();
return result;
}
@Override
public String getDisplayName() {
// Also #60263. Forms do not have a tc.name??
String result = tc.getDisplayName();
return result != null ? result : tc.getName();
}

@Override
public String getHtmlDisplayName() {
return tc.getHtmlDisplayName();
}

@Override
public Image getIcon (int type) {
Image image = tc.getIcon();
return image == null ? ImageUtilities.loadImage("org/openide/resources/actions/empty.gif") : image; // NOI18N
Expand All @@ -659,6 +659,7 @@ void refresh () {
fireNameChange(null, null);
}

@Override
public int compareTo(TopComponentNode tcn) {
String displayName1 = getDisplayName();
String displayName2 = tcn.getDisplayName();
Expand All @@ -672,30 +673,36 @@ public int compareTo(TopComponentNode tcn) {

/** Invokes itself ac action when double click or Enter pressed on node
*/
@Override
public Action getPreferredAction() {
return this;
}

/** Implementation of Action interface, activates TopComponent
* currently selected in the list view (should be the same component
* that is asociated with this Node)
* that is associated with this Node)
*/
@Override
public void actionPerformed(ActionEvent evt) {
activate(evt);
}

@Override
public boolean isEnabled() {
return true;
}

@Override
public void putValue(String key, Object value) {
// no operation
}

@Override
public void setEnabled(boolean b) {
// no operation
}

@Override
public void propertyChange(PropertyChangeEvent evt) {
fireDisplayNameChange(null, null);
}
Expand Down
Loading