package bluej.stride.slots;

import bluej.utility.javafx.FXRunnable;
import bluej.utility.javafx.JavaFXUtil;
import threadchecker.OnThread;
import threadchecker.Tag;

import javafx.application.Platform;

public class SlotTraversalChars
implements SlotValueListener{    
   private final char[] endings;
   
   private FXRunnable callback;
    
   
   public SlotTraversalChars(char... endings)
   {        
      this.endings = endings;
       
      callback = null;     
      }
    
   
   public SlotTraversalChars(FXRunnable callback, char... endings)
   {        
      this.endings = endings;
       
      this.callback = callback;     
      }
    
   
   @Override
   
   public boolean valueChanged(HeaderItem slot, String oldValue, String newValue, FocusParent<HeaderItem> parent)
   {        
      
      for (char ending : endings) {
         if (newValue.contains("" + ending)) {                
            
            
            if ((newValue.charAt(newValue.length() - 1) == ending))
               {                    
               
               if (ending != ' ' || newValue.length() > 1)
                   {
                  if (callback != null)
                  callback.run();
                       
                  else
                       {                            
                     
                     if (Platform.isFxApplicationThread())
                     JavaFXUtil.runPlatformLater(() -> parent.focusRight(slot));                         
                     }                     
                  }                 
               }
               
            return false;             
            }         
         }
       
      return true;     
      }
    
   
   public static final SlotTraversalChars ASSIGN_LHS = new SlotTraversalChars('=');
   
   public static final SlotTraversalChars METHOD_NAME = new SlotTraversalChars(' ', '(');
   
   public static final SlotTraversalChars IDENTIFIER = new SlotTraversalChars(' ');

   
   public char[] getChars()
   {        
      return endings;     
      }
    
   
   @Override
   @OnThread(Tag.FXPlatform)
   
   public void backSpacePressedAtStart(HeaderItem slot)
{    
}

   
@Override
@OnThread(Tag.FXPlatform)
   
public void deletePressedAtEnd(HeaderItem slot)
{ 
} 
}
top, use, map, class SlotTraversalChars

.   SlotTraversalChars
.   SlotTraversalChars
.   valueChanged
.   getChars
.   backSpacePressedAtStart
.   deletePressedAtEnd




97 neLoCode + 0 LoComm