001: /* ====================================================================
002: * The JRefactory License, Version 1.0
003: *
004: * Copyright (c) 2001 JRefactory. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions
008: * are met:
009: *
010: * 1. Redistributions of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * 2. Redistributions in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in
015: * the documentation and/or other materials provided with the
016: * distribution.
017: *
018: * 3. The end-user documentation included with the redistribution,
019: * if any, must include the following acknowledgment:
020: * "This product includes software developed by the
021: * JRefactory (http://www.sourceforge.org/projects/jrefactory)."
022: * Alternately, this acknowledgment may appear in the software itself,
023: * if and wherever such third-party acknowledgments normally appear.
024: *
025: * 4. The names "JRefactory" must not be used to endorse or promote
026: * products derived from this software without prior written
027: * permission. For written permission, please contact seguin@acm.org.
028: *
029: * 5. Products derived from this software may not be called "JRefactory",
030: * nor may "JRefactory" appear in their name, without prior written
031: * permission of Chris Seguin.
032: *
033: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
034: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
035: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
036: * DISCLAIMED. IN NO EVENT SHALL THE CHRIS SEGUIN OR
037: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
038: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
039: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
040: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
041: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
042: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
043: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
044: * SUCH DAMAGE.
045: * ====================================================================
046: *
047: * This software consists of voluntary contributions made by many
048: * individuals on behalf of JRefactory. For more information on
049: * JRefactory, please see
050: * <http://www.sourceforge.org/projects/jrefactory>.
051: */
052: package org.acm.seguin.ide.jbuilder.refactor;
053:
054: import com.borland.jbuilder.node.JavaFileNode;
055: import com.borland.primetime.ide.Browser;
056: import com.borland.primetime.node.Node;
057: import com.borland.primetime.vfs.Buffer;
058: import java.io.StringReader;
059: import java.io.IOException;
060: import org.acm.seguin.ide.common.action.SelectedFileSet;
061: import org.acm.seguin.summary.FileSummary;
062: import org.acm.seguin.summary.TypeSummary;
063:
064: /**
065: * The concrete implementation of this class for JBuilder
066: *
067: *@author Chris Seguin
068: *@author <a href="JRefactory@ladyshot.demon.co.uk">Mike Atkinson</a>
069: *@version $Id: JBuilderSelectedFileSet.java,v 1.3 2003/07/29 20:51:52 mikeatkinson Exp $
070: *@created October 18, 2001
071: */
072: public class JBuilderSelectedFileSet extends SelectedFileSet {
073: private Node[] initialNodes;
074:
075: /**
076: * Constructor for the JBuilderSelectedFileSet object
077: *
078: *@param init Description of Parameter
079: */
080: public JBuilderSelectedFileSet(Node[] init) {
081: initialNodes = init;
082: }
083:
084: /**
085: * Gets the Nodes attribute of the JBuilderRefactoringAction object
086: *
087: *@return The Nodes value
088: */
089: private Node[] getNodes() {
090: if (initialNodes == null) {
091: Node[] nodeArray = new Node[1];
092: Browser browser = Browser.getActiveBrowser();
093: nodeArray[0] = browser.getActiveNode();
094: return nodeArray;
095: } else {
096: return initialNodes;
097: }
098: }
099:
100: /**
101: * Gets the TypeSummaryArray attribute of the SelectedFileSet object
102: *
103: *@return The TypeSummaryArray value
104: */
105: public TypeSummary[] getTypeSummaryArray() {
106: Node[] nodeArray = getNodes();
107:
108: TypeSummary[] typeSummaryArray = new TypeSummary[nodeArray.length];
109:
110: for (int ndx = 0; ndx < nodeArray.length; ndx++) {
111: TypeSummary typeSummary = getTypeSummaryFromNode(nodeArray[ndx]);
112: if (typeSummary == null) {
113: return null;
114: }
115: typeSummaryArray[ndx] = typeSummary;
116: }
117:
118: return typeSummaryArray;
119: }
120:
121: /**
122: * Gets the TypeSummaryFromNode attribute of the AddParentClassAction
123: * object
124: *
125: *@param node Description of Parameter
126: *@return The TypeSummaryFromNode value
127: */
128: private TypeSummary getTypeSummaryFromNode(Node node) {
129: FileSummary fileSummary = reloadNode(node);
130: if (fileSummary == null) {
131: return null;
132: }
133:
134: return getTypeSummary(fileSummary);
135: }
136:
137: /**
138: * Gets the AllJava attribute of the SelectedFileSet object
139: *
140: *@return The AllJava value
141: */
142: public boolean isAllJava() {
143: Node[] nodeArray = getNodes();
144: for (int ndx = 0; ndx < nodeArray.length; ndx++) {
145: if (!(nodeArray[0] instanceof JavaFileNode)) {
146: return false;
147: }
148: }
149:
150: return true;
151: }
152:
153: /**
154: * Gets the SingleJavaFile attribute of the SelectedFileSet object
155: *
156: *@return The SingleJavaFile value
157: */
158: public boolean isSingleJavaFile() {
159: Node[] nodeArray = getNodes();
160: return (nodeArray.length == 1)
161: && (nodeArray[0] instanceof JavaFileNode);
162: }
163:
164: /**
165: * Description of the Method
166: *
167: *@param node Description of Parameter
168: *@return Description of the Returned Value
169: */
170: private FileSummary reloadNode(Node node) {
171: try {
172: if (node instanceof JavaFileNode) {
173: JavaFileNode jtn = (JavaFileNode) node;
174:
175: Buffer buffer = jtn.getBuffer();
176: byte[] contents = buffer.getContent();
177: StringReader reader = new StringReader(new String(
178: contents));
179:
180: return reloadFile(jtn.getUrl().getFileObject(), reader);
181: }
182: } catch (IOException ioe) {
183: // Unable to get the buffer for that node, so fail
184: }
185:
186: return null;
187: }
188: }
189: // EOF
|