⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 navigateform.java

📁 Program helping you to remember the route. It cab be route from conference room to coffee-room, it
💻 JAVA
字号:
import javax.microedition.lcdui.*;

public class NavigateForm extends Form implements CommandListener, Runnable {
    TripMate       main;
    Trip           trip;
    NavigateCanvas canvas;
    Gauge          stepProgress;
    Gauge          tripProgress;
    StringItem     description;
    StringItem     stepTimePassed;
    StringItem     tripTimePassed;
    StringItem     stepTimeLeft;
    StringItem     tripTimeLeft;
    StringItem     tripDelta;
    int            duration;
    boolean        endOfTrip;
    

    NavigateForm(NavigateCanvas canvas) {
        super("Navigating");
        this.main = canvas.main;
        this.trip = canvas.trip;
        this.canvas = canvas;
        duration = trip.duration();
        description = new StringItem(null, trip.description);
        stepProgress = new Gauge("Step progress", false, duration, 0);
        stepTimePassed = new StringItem("Step time passed", "");
        stepTimeLeft = new StringItem("Step time left", "");
        tripProgress = new Gauge("Trip progress", false, duration, 0);
        tripTimePassed = new StringItem("Trip time passed", "");
        tripTimeLeft = new StringItem("Trip time left", "");
        tripDelta = new StringItem("Trip lag", "");

        append(description);
        append(stepProgress);
        append(stepTimePassed);
        append(stepTimeLeft);
        append(tripProgress);
        append(tripTimePassed);
        append(tripTimeLeft);
        append(tripDelta);
        canvas.task.is(this);       

        setCommandListener(this);
        int currTime = (int)(System.currentTimeMillis()/1000) - main.state.startTime;        
        if (main.state.suspendTime == 0) { 
            if (currTime < duration) { 
                addCommand(TripMate.SUSPEND_CMD);
                addCommand(TripMate.NEXT_CMD);
                addCommand(TripMate.STOP_CMD);
            } else { 
                addCommand(TripMate.BACK_CMD); 
                stepProgress.setValue(stepProgress.getMaxValue());
                tripProgress.setValue(duration);
                showTripInfo(duration);
            }
        } else { 
            addCommand(TripMate.RESUME_CMD);
            addCommand(TripMate.STOP_CMD);
        }
        addCommand(TripMate.GRAPHIC_CMD);
        addCommand(TripMate.QUIT_CMD);
        Display.getDisplay(main).setCurrent(this);
    }
  
    void update(int i, int total, int delta) { 
        Point p = trip.points[i];
        description.setText(p.description);
        stepProgress.setMaxValue(canvas.intervals[i]);
        stepProgress.setValue(delta);
        stepTimePassed.setText(Converter.timeToString(delta));
        stepTimeLeft.setText(Converter.timeToString(canvas.intervals[i] - delta));
        tripProgress.setValue(total);
        showTripInfo(total);
    }

    void showTripInfo(int total) { 
        tripTimePassed.setText(Converter.timeToString(total - main.state.baseTime + main.state.startTime));
        tripTimeLeft.setText(Converter.timeToString(duration - total));
        if (main.state.baseTime < main.state.startTime) { 
            tripDelta.setLabel("Trip lag");
            tripDelta.setText(Converter.timeToString(main.state.startTime - main.state.baseTime));
        } else { 
            tripDelta.setLabel("Trip advance");
            tripDelta.setText(Converter.timeToString(main.state.baseTime - main.state.startTime));
        }
    }

    public void run() {
        if (main.state.suspendTime != 0) { 
            return;
        }
        int currTime = (int)(System.currentTimeMillis()/1000) - main.state.startTime;        
        if (currTime >= duration) { 
            if (!endOfTrip) { 
                canvas.stopTimer();
                endOfTrip = true;
                setTitle("End of trip");
                removeCommand(TripMate.STOP_CMD);
                removeCommand(TripMate.SUSPEND_CMD);
                removeCommand(TripMate.NEXT_CMD);
                addCommand(TripMate.BACK_CMD);
                stepProgress.setValue(stepProgress.getMaxValue());
                tripProgress.setValue(duration);
                showTripInfo(duration);
            }
        } else { 
            int totalTime = currTime;
            int[] intervals = canvas.intervals;
            if (main.state.tripState == TripState.NAVIGATE_FORWARD) { 
                for (int i = 0; i < intervals.length; i++) { 
                    int delta = intervals[i];
                    if (currTime <= delta) {
                        update(i, totalTime, currTime);
                        break;
                    } 
                    currTime -= delta;
                }        
            } else { 
                for (int i = intervals.length; --i >= 0;) { 
                    int delta = intervals[i];
                    if (currTime <= delta) { 
                        update(i, totalTime, currTime);
                        break;
                    } 
                    currTime -= delta;
                }        
            }       
        }
    }

    public void commandAction(Command c, Displayable d)  
    {
        if (c == TripMate.SUSPEND_CMD) { 
            setTitle("Suspended");
            main.state.suspendTime = (int)(System.currentTimeMillis()/1000);
            main.updateState();
            removeCommand(TripMate.SUSPEND_CMD);
            removeCommand(TripMate.NEXT_CMD);
            addCommand(TripMate.RESUME_CMD);
        } else if (c == TripMate.RESUME_CMD) { 
            setTitle("Navigating");
            main.state.startTime += (int)(System.currentTimeMillis()/1000) - main.state.suspendTime;
            main.state.suspendTime = 0;
            main.updateState();
            removeCommand(TripMate.RESUME_CMD);
            addCommand(TripMate.SUSPEND_CMD);
            addCommand(TripMate.NEXT_CMD);
        } else if (c == TripMate.GRAPHIC_CMD) { 
            Display.getDisplay(main).setCurrent(canvas);
            canvas.task.is(canvas);       
        } else { 
            canvas.commandAction(c, d);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -