package bluej.stride.operations;

import java.util.Arrays;
import java.util.List;
import javafx.scene.control.CustomMenuItem;

import bluej.Config;
import bluej.stride.slots.EditableSlot.MenuItemOrder;
import bluej.stride.generic.Frame;
import bluej.stride.generic.InteractionManager;

import threadchecker.OnThread;
import threadchecker.Tag;

public class EnableFrameOperation
extends FrameOperation{    
   public EnableFrameOperation(InteractionManager editor)
   {
      super(editor, "ENABLE", Combine.ANY);     
      }

   
   @Override
   @OnThread(Tag.FXPlatform)
   
   public void enablePreview()
   {
      editor.getSelection().getSelected().forEach(frame -> frame.setFrameEnablePreview(Frame.FramePreviewEnabled.PREVIEW_ENABLED));     
      }

   
   @Override
   @OnThread(Tag.FXPlatform)
   
   public void disablePreview()
   {
      editor.getSelection().getSelected().forEach(frame -> frame.setFrameEnablePreview(Frame.FramePreviewEnabled.PREVIEW_NONE));     
      }

   
   @Override
   @OnThread(Tag.FXPlatform)
   
   protected void execute(List<Frame> frames)
   {
      frames.forEach(frame -> frame.setFrameEnabled(true));     
      }

   
   @Override
   
   public List getLabels()
   {
      return Arrays.asList(l(Config.getString("frame.operation.enable"), MenuItemOrder.ENABLE_FRAME));     
      }

   
   @Override
   @OnThread(Tag.FXPlatform)
   
   public void onMenuShowing(CustomMenuItem item)
   {        
      
      boolean canAllBeEnabled = editor.getSelection().getSelected().stream().allMatch(f -> f.canHaveEnabledState(true));
      item.setDisable(!canAllBeEnabled);     
      }

   
   @Override
   
   public boolean onlyOnContextMenu()
   {        
      return true;     
      } 
   }
top, use, map, class EnableFrameOperation

.   EnableFrameOperation
.   enablePreview
.   disablePreview
.   execute
.   getLabels
.   onMenuShowing
.   onlyOnContextMenu




71 neLoCode + 0 LoComm