Coverage Report - com.timjohnstondev.unitconverter.view.listener.ReorderAdapter
 
Classes in this File Line Coverage Branch Coverage Complexity
ReorderAdapter
0%
0/22
0%
0/6
1.667
 
 1  
 /**
 2  
  * Copyright 2009 Timothy Johnston Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
 3  
  * file except in compliance with the License. You may obtain a copy of the License at
 4  
  * 
 5  
  * http://www.apache.org/licenses/LICENSE-2.0
 6  
  * 
 7  
  * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 8  
  * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 9  
  * specific language governing permissions and limitations under the License.
 10  
  */
 11  
 package com.timjohnstondev.unitconverter.view.listener;
 12  
 
 13  
 import java.awt.event.MouseAdapter;
 14  
 import java.awt.event.MouseEvent;
 15  
 import javax.swing.DefaultListModel;
 16  
 import javax.swing.JList;
 17  
 import com.timjohnstondev.unitconverter.controller.ModelController;
 18  
 
 19  
 /**
 20  
  * This listener allows reordering of a {@link JList} that is backed by a {@link DefaultListModel}.
 21  
  */
 22  
 public class ReorderAdapter extends MouseAdapter
 23  
 {
 24  
   private ModelController modelController;
 25  
   private JList list;
 26  
   private int pressIndex;
 27  
   private int releaseIndex;
 28  
 
 29  
   /**
 30  
    * @param newController controller
 31  
    * @param listToReorder list
 32  
    */
 33  
   public ReorderAdapter(final ModelController newController, final JList listToReorder)
 34  0
   {
 35  0
     if (!(listToReorder.getModel() instanceof DefaultListModel)) { throw new IllegalArgumentException(
 36  
         "List must have a DefaultListModel"); }
 37  0
     modelController = newController;
 38  0
     list = listToReorder;
 39  0
   }
 40  
 
 41  
   @Override
 42  
   public final void mousePressed(final MouseEvent e)
 43  
   {
 44  0
     pressIndex = list.locationToIndex(e.getPoint());
 45  0
   }
 46  
 
 47  
   @Override
 48  
   public final void mouseReleased(final MouseEvent e)
 49  
   {
 50  0
     releaseIndex = list.locationToIndex(e.getPoint());
 51  0
     if (releaseIndex != pressIndex && releaseIndex != -1)
 52  
     {
 53  0
       reorder();
 54  0
       setPropertyOrderPreferences();
 55  
     }
 56  0
   }
 57  
 
 58  
   @Override
 59  
   public final void mouseDragged(final MouseEvent e)
 60  
   {
 61  0
     mouseReleased(e);
 62  0
     pressIndex = releaseIndex;
 63  0
   }
 64  
 
 65  
   private void reorder()
 66  
   {
 67  0
     final DefaultListModel model = (DefaultListModel) list.getModel();
 68  0
     final Object dragee = model.elementAt(pressIndex);
 69  0
     model.removeElementAt(pressIndex);
 70  0
     model.insertElementAt(dragee, releaseIndex);
 71  0
   }
 72  
 
 73  
   private void setPropertyOrderPreferences()
 74  
   {
 75  0
     modelController.setPropertyOrderPreferences(list);
 76  0
   }
 77  
 }