/* * JaamSim Discrete Event Simulation * Copyright (C) 2015 Ausenco Engineering Canada Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.jaamsim.Graphics; import com.jaamsim.basicsim.Entity; import com.jaamsim.basicsim.ErrorException; import com.jaamsim.input.EntityInput; import com.jaamsim.input.Input; import com.jaamsim.input.InputAgent; import com.jaamsim.input.Keyword; import com.jaamsim.ui.FrameBox; import com.jaamsim.ui.GUIFrame; import com.jaamsim.ui.ObjectSelector; public class EntityLabel extends TextBasics { @Keyword(description = "The name of an entity that is labelled by this EntityLabel.", exampleList = {"DisplayEntity1"}) protected final EntityInput<DisplayEntity> targetEntity; { targetEntity = new EntityInput<>(DisplayEntity.class, "TargetEntity", "Key Inputs", null); this.addInput(targetEntity); targetEntity.setHidden(true); relativeEntity.setHidden(true); regionInput.setHidden(true); } public EntityLabel() {} public static EntityLabel getLabel(DisplayEntity ent) { for (EntityLabel label : Entity.getClonesOfIterator(EntityLabel.class)) { if (label.getTarget() == ent) return label; } return null; } @Override public void updateForInput(Input<?> in) { super.updateForInput(in); if (in == targetEntity) { DisplayEntity ent = targetEntity.getValue(); if (ent == null) { setSavedText("ERROR"); return; } setSavedText(ent.getName()); return; } } @Override public void acceptEdits() { try { // Rename both the target entity and the label InputAgent.renameEntity(targetEntity.getValue(), getEditText()); this.updateForTargetNameChange(); // Update the entries in the Object Selector ObjectSelector.allowUpdate(); FrameBox.reSelectEntity(); super.acceptEdits(); } catch (ErrorException e) { super.cancelEdits(); GUIFrame.invokeErrorDialog("Input Error", e.getMessage()); } } private DisplayEntity getTarget() { return targetEntity.getValue(); } public void updateForTargetNameChange() { String targetName = targetEntity.getValue().getName(); InputAgent.renameEntity(this, targetName + "_Label"); setSavedText(targetName); this.resizeForText(); } }