CB_UI.GL_UI.Views.TestViews.TrackListView.java Source code

Java tutorial

Introduction

Here is the source code for CB_UI.GL_UI.Views.TestViews.TrackListView.java

Source

/* 
 * Copyright (C) 2014 team-cachebox.de
 *
 * Licensed under the : GNU General Public License (GPL);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.gnu.org/licenses/gpl.html
 *
 * 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 CB_UI.GL_UI.Views.TestViews;

import java.util.Iterator;

import com.badlogic.gdx.graphics.g2d.BitmapFontCache;
import com.badlogic.gdx.math.Vector2;

import CB_Locator.Map.Track;
import CB_Translation_Base.TranslationEngine.Translation;
import CB_UI.GlobalCore;
import CB_UI.RouteOverlay;
import CB_UI.GL_UI.Views.TrackListViewItem;
import CB_UI.GL_UI.Views.TrackListViewItem.IRouteChangedListener;
import CB_UI_Base.GL_UI.GL_View_Base;
import CB_UI_Base.GL_UI.Sprites;
import CB_UI_Base.GL_UI.Controls.List.Adapter;
import CB_UI_Base.GL_UI.Controls.List.ListViewItemBase;
import CB_UI_Base.GL_UI.Controls.List.V_ListView;
import CB_UI_Base.GL_UI.GL_Listener.GL;
import CB_UI_Base.Math.CB_RectF;
import CB_UI_Base.Math.UI_Size_Base;

/**
 * @author Longri
 */
public class TrackListView extends V_ListView {
    public static CB_RectF ItemRec;
    BitmapFontCache emptyMsg;
    int selectedTrackItem;

    public static TrackListView that;

    public TrackListView(CB_RectF rec, String Name) {
        super(rec, Name);
        that = this;

        ItemRec = new CB_RectF(0, 0, this.getWidth(), UI_Size_Base.that.getButtonHeight() * 1.1f);

        this.setEmptyMsg(Translation.Get("EmptyTrackList"));

        setBackground(Sprites.ListBack);

        this.setBaseAdapter(null);
        this.setBaseAdapter(new CustomAdapter());

    }

    @Override
    public void onShow() {
        this.notifyDataSetChanged();
    }

    @Override
    public void onHide() {
        // platformConector.hideView(ViewConst.TRACK_LIST_VIEW);
    }

    @Override
    public void Initial() {
        super.Initial();
    }

    @Override
    protected void SkinIsChanged() {

    }

    TrackListViewItem aktRouteItem;

    public class CustomAdapter implements Adapter {

        public CustomAdapter() {
        }

        @Override
        public int getCount() {
            int size = RouteOverlay.getRouteCount();
            if (GlobalCore.AktuelleRoute != null)
                size++;
            return size;
        }

        @Override
        public ListViewItemBase getView(int position) {
            int index = position;
            if (GlobalCore.AktuelleRoute != null) {
                if (position == 0) {
                    aktRouteItem = new TrackListViewItem(ItemRec, index, GlobalCore.AktuelleRoute,
                            new IRouteChangedListener() {

                                @Override
                                public void routeChanged(Track route) {
                                    // Notify Map to Reload RouteOverlay
                                    RouteOverlay.RoutesChanged();
                                }
                            });
                    aktRouteItem.setOnClickListener(onItemClickListener);
                    aktRouteItem.setOnLongClickListener(TrackListView.this.getOnLongClickListener());

                    return aktRouteItem;
                }
                position--;
            }

            TrackListViewItem v = new TrackListViewItem(ItemRec, index, RouteOverlay.getRoute(position),
                    new IRouteChangedListener() {

                        @Override
                        public void routeChanged(Track route) {
                            // Notify Map to Reload RouteOverlay
                            RouteOverlay.RoutesChanged();
                        }
                    });

            v.setOnClickListener(onItemClickListener);
            v.setOnLongClickListener(TrackListView.this.getOnLongClickListener());
            return v;
        }

        @Override
        public float getItemSize(int position) {
            if (GlobalCore.AktuelleRoute != null && position == 1) {
                return ItemRec.getHeight() + ItemRec.getHalfHeight();
            }

            return ItemRec.getHeight();
        }

    }

    @Override
    public boolean onTouchDown(int x, int y, int pointer, int button) {
        super.onTouchDown(x, y, pointer, button);

        // for (Iterator<GL_View_Base> iterator = childs.iterator(); iterator.hasNext();)
        for (Iterator<GL_View_Base> iterator = childs.reverseIterator(); iterator.hasNext();) {
            // Child View suchen, innerhalb derer Bereich der touchDown statt gefunden hat.
            GL_View_Base view = iterator.next();

            if (view instanceof TrackListViewItem) {
                if (view.contains(x, y)) {
                    ((TrackListViewItem) view).lastItemTouchPos = new Vector2(x - view.getX(), y - view.getY());
                }
            }
        }
        return true;
    }

    public void notifyActTrackChanged() {
        if (aktRouteItem != null)
            aktRouteItem.notifyTrackChanged(GlobalCore.AktuelleRoute);
        GL.that.renderOnce();
    }

    private final OnClickListener onItemClickListener = new OnClickListener() {

        @Override
        public boolean onClick(GL_View_Base v, int x, int y, int pointer, int button) {
            selectedTrackItem = ((ListViewItemBase) v).getIndex();
            setSelection(selectedTrackItem);
            return true;
        }
    };

    @Override
    public TrackListViewItem getSelectedItem() {
        return (TrackListViewItem) super.getSelectedItem();

    }

}