blob: 7b8919d3772656a024559116f22a839a83492d5d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.netbeans.modules.websvc.rest.client;
import javax.swing.JPanel;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.border.EtchedBorder;
import org.netbeans.modules.websvc.saas.model.WadlSaasResource;
import org.netbeans.modules.websvc.saas.spi.SaasViewProvider;
import org.openide.DialogDescriptor;
import org.openide.explorer.ExplorerManager;
import org.openide.explorer.view.BeanTreeView;
import org.openide.nodes.Node;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
/**
*
* @author Milan Kuchtiak
* Panel for displaying web services in projects
* TODO: Needs to be moved to a common place since this serves both JAXWS and JAXRPC
*/
public class SaasExplorerPanel extends JPanel implements ExplorerManager.Provider, PropertyChangeListener {
private DialogDescriptor descriptor;
private final ExplorerManager manager;
private BeanTreeView treeView;
private Node selectedResourceNode;
public SaasExplorerPanel() {
manager = new ExplorerManager();
selectedResourceNode = null;
initComponents();
initUserComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
jLblTreeView = new javax.swing.JLabel();
setLayout(new java.awt.GridBagLayout());
org.openide.awt.Mnemonics.setLocalizedText(jLblTreeView, NbBundle.getMessage(SaasExplorerPanel.class, "LBL_SelectRESTResource")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(11, 11, 0, 11);
add(jLblTreeView, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLblTreeView;
// End of variables declaration//GEN-END:variables
private void initUserComponents() {
treeView = new BeanTreeView();
treeView.setRootVisible(false);
treeView.setPopupAllowed(false);
treeView.setBorder(new EtchedBorder());
treeView.setDefaultActionAllowed(false);
java.awt.GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(11, 11, 0, 11);
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
add(treeView, gridBagConstraints);
jLblTreeView.setLabelFor(treeView.getViewport().getView());
treeView.getAccessibleContext().setAccessibleName(NbBundle.getMessage(SaasExplorerPanel.class, "ACSD_RESTResourcesTreeView"));
treeView.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage(SaasExplorerPanel.class, "ACSD_RESTResourcesTreeView"));
}
@Override
public ExplorerManager getExplorerManager() {
return manager;
}
@Override
public void addNotify() {
super.addNotify();
manager.addPropertyChangeListener(this);
SaasViewProvider saasView = Lookup.getDefault().lookup(SaasViewProvider.class);
if (saasView != null) {
Node saasRootNode = saasView.getSaasView();
manager.setRootContext(saasRootNode);
}
// !PW If we preselect a node, this can go away.
descriptor.setValid(false);
treeView.requestFocusInWindow();
}
@Override
public void removeNotify() {
manager.removePropertyChangeListener(this);
super.removeNotify();
}
public void setDescriptor(DialogDescriptor descriptor) {
this.descriptor = descriptor;
}
public Node getSelectedService() {
return selectedResourceNode;
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
if(evt.getSource() == manager) {
if(ExplorerManager.PROP_SELECTED_NODES.equals(evt.getPropertyName())) {
Node nodes[] = manager.getSelectedNodes();
if(nodes != null && nodes.length > 0 ) {
Node node = nodes[0];
WadlSaasResource saasResource = node.getLookup().lookup(WadlSaasResource.class);
if(saasResource != null) {
// This is a resource node.
if (saasResource.getMethods().size() > 0) {
selectedResourceNode = node;
descriptor.setValid(true);
} else {
// Contrains no methods.
selectedResourceNode = null;
descriptor.setValid(false);
}
} else {
// This is not a service node.
selectedResourceNode = null;
descriptor.setValid(false);
}
}
}
}
}
}