ruper2/src/java/eclipse/org/krysalis/ruper2/eclipse/plugin/ui/browser Downloader.java,NONE,1.1 RuperView.java,1.2,1.3 RepositorySetModel.java,1.1,NONE

[email protected]
Newsgroups gmane.comp.krysalis.metamorphosis.cvs
Message-ID <[email protected]>
Update of /cvsroot/metamorphosis/ruper2/src/java/eclipse/org/krysalis/ruper2/eclipse/plugin/ui/browser
In directory sc8-pr-cvs1:/tmp/cvs-serv657/src/java/eclipse/org/krysalis/ruper2/eclipse/plugin/ui/browser

Modified Files:
	RuperView.java 
Added Files:
	Downloader.java 
Removed Files:
	RepositorySetModel.java 
Log Message:
checkbox states fixed, working in download action

--- NEW FILE: Downloader.java ---
/*
 * Created on Oct 24, 2003
  */
package org.krysalis.ruper2.eclipse.plugin.ui.browser;

import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;

/**
 * @author anou_mana
 */
public class Downloader  implements IRunnableWithProgress {

	private ArrayList m_resourcesToDownload;
	
	/**
	 * 
	 */
	public Downloader() {
		super();
		// TODO Auto-generated constructor stub
	}

	public void run(IProgressMonitor monitor)
		 throws InvocationTargetException, InterruptedException
	{
		// TODO  download concept
	}

	/**
	 * @param list
	 */
	public void setResourcesToDownload(ArrayList list) {
		m_resourcesToDownload = list;
	}

}

Index: RuperView.java
===================================================================
RCS file: /cvsroot/metamorphosis/ruper2/src/java/eclipse/org/krysalis/ruper2/eclipse/plugin/ui/browser/RuperView.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** RuperView.java	24 Oct 2003 14:48:23 -0000	1.2
--- RuperView.java	24 Oct 2003 20:52:37 -0000	1.3
***************
*** 1,14 ****
--- 1,21 ----
  package org.krysalis.ruper2.eclipse.plugin.ui.browser;
  
+ import java.lang.reflect.InvocationTargetException;
+ import java.util.ArrayList;
  import java.util.Iterator;
  import java.util.List;
  
  import org.eclipse.core.resources.ResourcesPlugin;
+ import org.eclipse.core.runtime.IProgressMonitor;
+ import org.eclipse.jface.action.Action;
  import org.eclipse.jface.action.IMenuListener;
  import org.eclipse.jface.action.IMenuManager;
  import org.eclipse.jface.action.MenuManager;
  import org.eclipse.jface.dialogs.MessageDialog;
+ import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+ import org.eclipse.jface.viewers.CheckStateChangedEvent;
  import org.eclipse.jface.viewers.CheckboxTreeViewer;
  import org.eclipse.jface.viewers.DoubleClickEvent;
+ import org.eclipse.jface.viewers.ICheckStateListener;
  import org.eclipse.jface.viewers.IDoubleClickListener;
  import org.eclipse.jface.viewers.ITreeContentProvider;
***************
*** 26,29 ****
--- 33,37 ----
  import org.krysalis.ruper2.RuperException;
  import org.krysalis.ruper2.eclipse.EclipseFileUpdater;
+ import org.krysalis.ruper2.eclipse.plugin.RuperPlugin;
  import org.krysalis.ruper2.repository.IRepository;
  import org.krysalis.ruper2.repository.RepositoryObject;
***************
*** 48,60 ****
   */
  
! public class RuperView extends ViewPart {
  	
!     private CheckboxTreeViewer viewer;
      
  	// root model input to the view
  	private RepositoryObject m_rootInput;
      
!     //private Action action1;
!     //private Action doubleClickAction;
  
      class ViewContentProvider  implements  ITreeContentProvider {
--- 56,67 ----
   */
  
! public class RuperView extends ViewPart  implements ICheckStateListener {
  	
!     private CheckboxTreeViewer m_viewer;
      
  	// root model input to the view
  	private RepositoryObject m_rootInput;
      
!     private Action downloadAction;
  
      class ViewContentProvider  implements  ITreeContentProvider {
***************
*** 165,176 ****
       */
      public void createPartControl(Composite parent) {
!         viewer =
              new CheckboxTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
  
!         viewer.setContentProvider(new ViewContentProvider());
!         viewer.setLabelProvider(new ViewLabelProvider());
!         viewer.setSorter(new NameSorter());
!         viewer.setInput(ResourcesPlugin.getWorkspace());
!         //makeActions();
          hookContextMenu();
          hookDoubleClickAction();
--- 172,186 ----
       */
      public void createPartControl(Composite parent) {
!         m_viewer =
              new CheckboxTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
  
!         m_viewer.setContentProvider(new ViewContentProvider());
!         m_viewer.setLabelProvider(new ViewLabelProvider());
!         m_viewer.setSorter(new NameSorter());
!         m_viewer.setInput(ResourcesPlugin.getWorkspace());
!         
!         //set the checkeStateListener
!         m_viewer.addCheckStateListener(this);
!         makeActions();
          hookContextMenu();
          hookDoubleClickAction();
***************
*** 178,181 ****
--- 188,232 ----
      }
  
+ 	private void makeActions(){
+ 		this.downloadAction = new Action() 
+ 		{
+ 			public void run() 
+ 			{
+ 				ArrayList resourcesToDownload = new ArrayList();
+ 				// get the checked elements
+ 				Object[] checkedElements = m_viewer.getCheckedElements();
+ 				for(int i = 0; i < checkedElements.length; i++){
+ 					Object checkedElement = checkedElements[i];
+ 					
+ 					if(checkedElement instanceof  RepositoryObject)
+ 					{
+ 						// add each element
+ 						RepositoryObject repositoryObject = (RepositoryObject)checkedElement;
+ 						resourcesToDownload.add(repositoryObject);
+ 					}
+ 				}
+ 				Downloader downloader = new Downloader();
+ 				downloader.setResourcesToDownload(resourcesToDownload);
+ 				
+ 				ProgressMonitorDialog monitorDlg = new ProgressMonitorDialog(RuperPlugin.getShell());	
+ 				IProgressMonitor progressMonitor = monitorDlg.getProgressMonitor();
+ 				
+ 				// TODO run
+ 
+ 				try {
+ 					monitorDlg.run(true, true, downloader);
+ 				}
+ 				catch (InvocationTargetException e) {
+ 					Logger.getLogger().error("Problem in download",e);
+ 				}
+ 				catch (InterruptedException e) {
+ 					Logger.getLogger().error("Problem in download",e);
+ 				}
+ 			}
+ 		};
+ 		
+ 	}
+ 	
+ 	
      private void hookContextMenu() {
          MenuManager menuMgr = new MenuManager("#PopupMenu");
***************
*** 186,192 ****
              }
          });
!         Menu menu = menuMgr.createContextMenu(viewer.getControl());
!         viewer.getControl().setMenu(menu);
!         getSite().registerContextMenu(menuMgr, viewer);
      }
  
--- 237,243 ----
              }
          });
!         Menu menu = menuMgr.createContextMenu(m_viewer.getControl());
!         m_viewer.getControl().setMenu(menu);
!         getSite().registerContextMenu(menuMgr, m_viewer);
      }
  
***************
*** 196,200 ****
  
      private void hookDoubleClickAction() {
!         viewer.addDoubleClickListener(new IDoubleClickListener() {
              public void doubleClick(DoubleClickEvent event) {
                //  doubleClickAction.run();
--- 247,251 ----
  
      private void hookDoubleClickAction() {
!         m_viewer.addDoubleClickListener(new IDoubleClickListener() {
              public void doubleClick(DoubleClickEvent event) {
                //  doubleClickAction.run();
***************
*** 205,209 ****
      private void showMessage(String message) {
          MessageDialog.openInformation(
!             viewer.getControl().getShell(),
              "Resource Updater View",
              message);
--- 256,260 ----
      private void showMessage(String message) {
          MessageDialog.openInformation(
!             m_viewer.getControl().getShell(),
              "Resource Updater View",
              message);
***************
*** 214,220 ****
       */
      public void setFocus() {
!         viewer.getControl().setFocus();
      }
      
  
  }
--- 265,373 ----
       */
      public void setFocus() {
!         m_viewer.getControl().setFocus();
      }
      
+ 	public void checkStateChanged(CheckStateChangedEvent event){
+ 		Object checkedElement = event.getElement();
+ 		
+ 		if (checkedElement instanceof RepositoryObject) {
+ 				
+ 			setCheckState((RepositoryObject)checkedElement,event.getChecked());
+ 		}
+ 		
+ 	}
+ 	
+ 	public void setCheckState(RepositoryObject element, boolean checked){
+ 
+ 		try {
+ 			// set the current node
+ 			m_viewer.setChecked(element, checked);
+ 			if(!checked){
+ 				m_viewer.setGrayed(element,false);
+ 				setSubtreeGrayed(element, false);
+ 			}
+ 				
+ 			//set the subnodes
+ 			m_viewer.setSubtreeChecked(element, checked);
+ 			// look at the parents
+ 			RepositoryObject parent= element.getParent();
+ 			
+ 			if (parent == null)
+ 				return;
+ 			while (parent != null) {
+ 				
+ 				boolean parentPartlyActive =  isPartlyActive(parent, checked);
+ 				
+ 				if(checked){
+ 					m_viewer.setChecked(parent, checked);
+ 				}
+ 				else{
+ 					if(!parentPartlyActive)
+ 						m_viewer.setChecked(parent, checked);
+ 				}
+ 				
+ 				m_viewer.setGrayed(parent,parentPartlyActive);
+ 				parent= parent.getParent();
+ 			}
+ 		}
+ 		catch (Exception e) {
+ 			Logger.getLogger().error("Setting the parent check state failed", e);
+ 		}
+ 	}
+ 	
+ 	private boolean isPartlyActive(RepositoryObject element, boolean elementState) throws Exception {
+ 			
+ 		boolean checked= m_viewer.getChecked(element);
+ 		
+ 		Object[] children= element.getChildrenArray();
+ 		
+ 		for (int i= 0; i < children.length; i++) {
+ 			if (! (children[i] instanceof RepositoryObject))
+ 				continue;
+ 			RepositoryObject childElement= (RepositoryObject)children[i];
+ 			
+ 			if (elementState){
+ 				 if (! m_viewer.getChecked(childElement)){
+ 				 	if(i != 0 )
+ 						return true;
+ 				 }
+ 					
+ 				 if (m_viewer.getGrayed(childElement))	
+ 					return true; 
+ 			}
+ 				
+ 			if (! elementState){
+ 				if (m_viewer.getChecked(childElement)){
+ 					if(i != 0 )
+ 						return true;
+ 				 }
+ 					
+ 				if (m_viewer.getGrayed(childElement))	
+ 					return true;
+ 			}	
+ 		}
+ 		return false;
+ 	}
+ 	
+ 	public void setSubtreeGrayed(RepositoryObject element, boolean grayed) {
+ 		
+ 		try {
+ 			boolean elementGrayed = m_viewer.getGrayed(element);
+ 			if(elementGrayed){
+ 				
+ 				Object[] children= element.getChildrenArray();
+ 			
+ 				for (int i= 0; i < children.length; i++) {
+ 					if (! (children[i] instanceof RepositoryObject))
+ 						continue;
+ 						m_viewer.getGrayed(children[i]);
+ 						setSubtreeGrayed((RepositoryObject)children[i], grayed);
+ 				}
+ 			}
+ 		}
+ 		catch (RuperException e) {
+ 			Logger.getLogger().error("Failed to gray the subtree", e);
+ 		}
+ 	}
  
  }

--- RepositorySetModel.java DELETED ---




-------------------------------------------------------
This SF.net email is sponsored by: The SF.net Donation Program.
Do you like what SourceForge.net is doing for the Open
Source Community?  Make a contribution, and help us add new
features and functionality. Click here: http://sourceforge.net/donate/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.