Here is bare bone code to dispaly "Hi" on everybar based on close.  Thanks to all for sharing the code, used some the shared ref.
package extensions.Suk;
import java.awt.Color;
import java.awt.Font;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.LinkedList;
import java.util.List;
import com.motivewave.platform.sdk.common.Coordinate;
import com.motivewave.platform.sdk.common.DataContext;
import com.motivewave.platform.sdk.common.DataSeries;
import com.motivewave.platform.sdk.common.Defaults;
import com.motivewave.platform.sdk.common.Enums;
import com.motivewave.platform.sdk.common.FontInfo;
import com.motivewave.platform.sdk.common.Inputs;
import com.motivewave.platform.sdk.common.MarkerInfo;
import com.motivewave.platform.sdk.common.Settings;
import com.motivewave.platform.sdk.common.Util;
import com.motivewave.platform.sdk.common.desc.BooleanDescriptor;
import com.motivewave.platform.sdk.common.desc.EnabledDependency;
import com.motivewave.platform.sdk.common.desc.FontDescriptor;
import com.motivewave.platform.sdk.common.desc.InputDescriptor;
import com.motivewave.platform.sdk.common.desc.IntegerDescriptor;
import com.motivewave.platform.sdk.common.desc.MAMethodDescriptor;
import com.motivewave.platform.sdk.common.desc.MarkerDescriptor;
import com.motivewave.platform.sdk.common.desc.SettingGroup;
import com.motivewave.platform.sdk.common.desc.SettingTab;
import com.motivewave.platform.sdk.common.desc.SettingsDescriptor;
import com.motivewave.platform.sdk.draw.Label;
import com.motivewave.platform.sdk.draw.Marker;
import com.motivewave.platform.sdk.study.RuntimeDescriptor;
import com.motivewave.platform.sdk.study.Study;
import com.motivewave.platform.sdk.study.StudyHeader;
@StudyHeader(namespace="extensions.Suk", id="BAR_TEXT", name="BAR_TEXT", label="Bar Text", menu="Suk",
desc="Add text to bar",overlay=true, supportsBarUpdates=false) 
public class DisplyText extends Study {
    
    private final static String  BAR_FONT = "fontTrendBar";
       
    @Override
       public void initialize(final Defaults defaults){
          SettingsDescriptor settingsDescriptor = createSD();
          SettingTab generalTab = settingsDescriptor.addTab("General");
          Font indicatorFont = new Font("Segoe UI Semibold", Font.PLAIN, 8);
          Font trendBarFont = new Font("Segoe UI Semibold", Font.PLAIN, 6);
               
          SettingGroup configGroup = generalTab.addGroup("Configuration");
          configGroup.addRow(new FontDescriptor(BAR_FONT, "Bar Font", trendBarFont, new Color(250, 250, 250), true, true, false));
        
    }
     @Override
       public void clearState(){
          super.clearState();
        }
     
     private boolean showText(final int index, final DataSeries dataSeries,final double L, final double H,final boolean showText,final FontInfo fontInfo,
             final boolean showHL) {
         if(showText == true) {
             Label lbl = new Label("Hi", fontInfo.getFont(), fontInfo.getColor(), fontInfo.getBgColor());
             if(showHL) {
                 lbl.setLocation(dataSeries.getStartTime(index), Math.abs(H));    
             }else {
                 lbl.setLocation(dataSeries.getStartTime(index), Math.abs(L));     
             }
             lbl.getText().setShowOutline(false);
             lbl.getText().setTextColor(fontInfo.getColor());
             lbl.getText().setHAlign(Enums.TextAlign.HCENTER);
                
             addFigure(lbl);
         }    
         return true;
     }
         
      @Override
       protected void calculate(final int index, final DataContext dataContext){
          if(index < 1){
             return; //No data
          }
          
          DataSeries dataSeries = dataContext.getDataSeries();
          
          if(dataSeries.isBarComplete(index) == false){
             return; 
          }
          
          double openPrice = dataSeries.getDouble(index, Enums.BarInput.OPEN);
          double closePrice = dataSeries.getDouble(index, Enums.BarInput.CLOSE);
          double highPrice = dataSeries.getDouble(index, Enums.BarInput.HIGH);
          double lowPrice = dataSeries.getDouble(index, Enums.BarInput.LOW);
          
          double barBodySize = Math.abs(openPrice - closePrice);
          double barSize = highPrice - lowPrice;
          double halfBarSize = barSize * 0.5;
          boolean isLargeBarIndicated = false;
          boolean isCloseHL = false;
        
          
          Settings settings = getSettings();
          FontInfo trendBarFontInfo = settings.getFont(BAR_FONT);
          if(closePrice > openPrice)
          {
              isCloseHL = true;
              showText(index, dataSeries,lowPrice,highPrice,true,trendBarFontInfo,isCloseHL);
          }
          else
          {
              showText(index, dataSeries,lowPrice,highPrice,true,trendBarFontInfo,isCloseHL);
          }
      }
}